您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python OpenCV – 无法检测到微小的“漏洞”(圆圈)

5b51 2022/1/14 8:20:38 python 字数 2005 阅读 435 来源 www.jb51.cc/python

我试图在图纸中检测“洞”,也就是说,它们不是圆圈,它们的大小各不相同.图像总是黑白的.只是试图解决这个问题,我从Python文档中拿了一个例子:import cv2 from cv2 import * import numpy as np img = cv2.imread('hole_test.jpg',0) img = cv2.medianBlur(im

概述

我试图在图纸中检测“洞”,也就是说,它们不是圆圈,它们的大小各不相同.图像总是黑白的.只是试图解决这个问题,我从Python文档中拿了一个例子:

import cv2
from cv2 import *
import numpy as np

img = cv2.imread('hole_test.jpg',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv2.cv.CV_HOUGH_GRADIENT,1,5,param1=200,param2=100,minRadius=0,maxRadius=0)

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    # pinpoint hole
    cv2.circle(cimg,(i[0],i[1]),2,(0,255),3)     
cv2.imshow('holes detected',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

检测到的孔很少而且很远.有什么我可以做的来提高这个例子的准确性,或者这不是实现这个目标的最佳方法吗?

这是一个示例图像,只是为了显示我想要找到的“洞”的各种尺寸/形状.

示例2按要求

import cv2
import numpy as np

im = cv2.imread('holes2.jpg')

gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
gray=cv2.threshold(gray,20,255,cv2.THRESH_BINARY)[1]
cv2.imshow('gray',gray)

contours,hierarchy = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE   )

for cnt in contours:
    area = cv2.contourArea(cnt)
    if area<400:
        cv2.drawContours(im,[cnt],(255,0),2)

cv2.imshow('im',im)
cv2.waitKey()

总结

以上是编程之家为你收集整理的Python OpenCV – 无法检测到微小的“漏洞”(圆圈)全部内容,希望文章能够帮你解决Python OpenCV – 无法检测到微小的“漏洞”(圆圈)所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶