2012-10-18 4 views
12

Ich habe den folgenden Code und möchte den Kreis erkennen.how to hough circles in cv2 mit python verwenden?

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

sieht es aus wie es nicht das Attribut hat und der Fehler ist folgende

'module' object has no attribute 'CV_HOUGH_GRADIENT' 

Weiß jemand, wo diese versteckten Parameter ist?

Dank

Antwort

19

CV_HOUGH_GRADIENT gehört zur cv Modul, so dass Sie diese importieren müssen:

import cv2.cv as cv 

und ändern Sie Ihren Funktionsaufruf

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

oder Sie können den Import überspringen und einfach sagen, 'Kreise = cv2.HoughCircles (grau, cv2.cv.CV_HOUGH_GRADIENT)' –

12

In meinem Fall, ich verwende opencv 3.0.0 und es funktionierte folgendermaßen:

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

d. H. Statt cv2.cv.CV_HOUGH_GRADIENT habe ich nur cv2.HOUGH_GRADIENT verwendet.

3

wenn Sie OpenCV verwenden 3, dann diesen Code verwenden:

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