使用Python OpenCV的HoughCircles时,我遇到了一个错误,提示缺少一个模块。

12

我有一个小的测试代码块,试图处理一张简单的带球照片:

#!/usr/local/bin/python
import cv2
import numpy as np

img = cv2.imread("b.jpg")
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
circles = cv2.HoughCircles(gray,cv2.CV_HOUGH_GRADIENT)
当我试着运行这个程序时,出现了以下错误:

AttributeError: 'module'对象没有属性'HOUGH_GRADIENT'

我已经安装和重新安装了两天,试图找出问题在哪里。任何帮助或指针将不胜感激!

你正在使用哪个版本的OpenCV? - Abid Rahman K
2个回答

10

请添加此行:import cv2.cv as cv并将circles更改为:

circles = cv.HoughCircles(gray,cv.CV_HOUGH_GRADIENT)

即用cv.CV_HOUGH_GRADIENT替代cv2.CV_HOUGH_GRADIENT,这将解决您遇到的AttributeError错误,但仍然会遇到类型错误,您需要为dpminDist提供参数(分别在第3和第4个位置)。您可以根据需要提供这些参数(这里我给出了1和10)。

#!/usr/local/bin/python
import cv2
import cv2.cv as cv
import numpy as np

img = cv2.imread("test.jpg")
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
circles = cv2.HoughCircles(gray,cv.CV_HOUGH_GRADIENT, 1, 10)

另外,请参考这里解决类似问题:

http://answers.opencv.org/question/1497/errors-with-cv2houghcircles/


9

尝试

circles = cv2.HoughCircles(gray, cv2.cv.CV_HOUGH_GRADIENT, 1.2, 75)

对我来说有效


2
更近期的OpenCV已经改变了接口。现在正确的用法是:circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.2, 75) - Martin Haeberli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接