как использовать круги hough в cv2 с python?

у меня есть следующий код, и я хочу, чтобы обнаружить круг.

   img = cv2.imread("act_circle.png")
   gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
   circles = cv2.HoughCircles(gray,cv2.CV_HOUGH_GRADIENT)

похоже, что у него нет атрибута, и ошибка следующая

'module' object has no attribute 'CV_HOUGH_GRADIENT'

кто-нибудь знает, где эти скрытые параметры?

спасибо

4 ответов


CV_HOUGH_GRADIENT принадлежит cv модуль, поэтому вам нужно будет импортировать это:

import cv2.cv as cv

и измените вызов функции на

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

в моем случае я использую opencv 3.0.0, и он работал следующим образом:

circles = cv2.HoughCircles(gray_im, cv2.HOUGH_GRADIENT, 2, 10, np.array([]), 20, 60, m/10)[0]  

т. е. вместо cv2.cv.CV_HOUGH_GRADIENT, я использовал только cv2.HOUGH_GRADIENT.


Если вы используете OpenCV 3, Используйте этот код:

img = cv2.imread("act_circle.png")
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
circles = cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT) # change here

для OpenCV3, cv2.HOUGH_GRADIENT этот комментарий является правильным. Итак, этот комментарий должен быть отмечен правильно. Stackflow отметил неправильный.