使用Python OpenCV的HoughCircles时出现缺少模块的错误
我有一段小测试代码,想处理一张简单的照片,照片里有一个球:
#!/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' object has no attribute 'HOUGH_GRADIENT'
我已经花了两天时间在安装和重新安装,试图找出问题出在哪里。希望能得到一些帮助或建议!
2 个回答
9
尝试一下
用这个代码来找圆形:circles = cv2.HoughCircles(gray, cv2.cv.CV_HOUGH_GRADIENT, 1.2, 75)
对我来说,这个方法有效
10
添加这一行:import cv2.cv as cv
,然后把circles
改成下面这样:
circles = cv2.HoughCircles(gray, cv.CV_HOUGH_GRADIENT)
也就是说,把cv2.CV_HOUGH_GRADIENT
换成cv.CV_HOUGH_GRADIENT
。
这样可以解决你遇到的AttributeError
错误,但你还是会碰到类型错误。你需要为dp
和minDist
提供参数(这两个参数分别是第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/