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多分钟,什么都没发生。
有人能帮助我吗?
答案 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图像的代码,它是瞬间完成的。首先尝试较小的图像,看它是否有效。