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

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

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

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

import cv2from cv2 import *import numpy as npimg = 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 cv2import numpy as npim = 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 – 无法检测到微小的“漏洞”(圆圈)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存