使用Python OpenCV的HoughCircles时出现缺少模块的错误

12 投票
2 回答
18149 浏览
提问于 2025-04-17 21:14

我有一段小测试代码,想处理一张简单的照片,照片里有一个球:

#!/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错误,但你还是会碰到类型错误。你需要为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/

撰写回答