Python - OpenCV - 使用HoughCircles进行圆检测

时间:2017-01-16 13:29:07

标签: python opencv image-processing geometry

img = cv2.imread('/home/user/Documents/pycharm-workspace/ImageProcessing/SDC10004.JPG', 1)
img = cv2.medianBlur(img, 5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img, cv2.cv.CV_HOUGH_GRADIENT, 1, 20,param1=50,param2=30,minRadius=0,maxRadius=0)
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)
    # draw the center of the circle
    cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3)

cv2.imwrite('circles_detected.JPG', cimg)

我正在尝试使用opencv中的HoughCircles函数检测图像中的圆圈。

这是我收到的错误消息:

cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) 
cv2.error: /build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/color.cpp:3789: error: (-215) scn == 1 && (dcn == 3 || dcn == 4) in function cvtColor

我还试图像这样加载灰度图像并关闭cvtColor函数

img = cv2.imread('/home/user/Documents/pycharm-workspace/ImageProcessing/SDC10004.JPG', 0)

然而,程序只需要永远运行。我等了10多分钟,什么都没发生。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:3)

对于第一个错误,您将使用

以彩色模式打开图像
img = cv2.imread('/home/user/Documents/pycharm-workspace/ImageProcessing/SDC10004.JPG', 1) #1 means color

然后尝试转换它将其视为灰度图像

cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) #GRAY2BGR means gray to BGR.
#You don't have a grayscale image to begin with.

对于你的第二个问题,Hough变换是一个漫长的过程。我尝试使用200 * 200图像的代码,它是瞬间完成的。首先尝试较小的图像,看它是否有效。