像opencv一样检测圆形

Har*_*rai 5 python opencv artificial-intelligence computer-vision

每个人我对OpenCV和计算机视觉都很陌生,而且我坚持这个问题,这看起来似乎是一件相当微不足道的事,但原谅我的无聊:)

我试图从横截面图像中检测出Rebars.

原始彩色图像

我正在使用此代码:

import cv2
import cv2.cv as cv
import numpy as np

img = cv2.imread('test/t2.jpg',0)
img = cv2.equalizeHist(img)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT,1,10,param1=50,param2=30,minRadius=0,maxRadius=25)

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    # draw the outer circle
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)

cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

这是我目前得到的结果,这并不好: 结果

我正在寻找关于如何解决这个问题以及如何了解更多关于简历的指示,因为我真的很感兴趣!

万分感谢!

Tre*_*vor 9

HoughCircles 在像你这样的复杂图像中检测圆圈的方法不够强大.

SO已经对此进行了一些讨论.你可以用质量接受的答案来引用这些帖子

标准方式:

在Python中使用CV2填充圆检测?

检测图像中圆圈的快速方法有哪些?

噪音图像:

https://dsp.stackexchange.com/questions/5930/find-circle-in-noisy-data

另一种方法:

梯度对向量

学习自动机