2014-02-20 6 views
5

Ich habe versucht, Kreise von einem schwarzen Hintergrund mit roten runden Art Objekte zu erkennen.circle detection in open cv mit python

import cv2 
import cv2.cv as cv 
import numpy as np 

img = cv2.imread('extracted.jpg',0) 
img = cv2.medianBlur(img,5) 
cimg = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT,1,20, 
         param1=50,param2=30,minRadius=0,maxRadius=0) 

circles = np.uint8(np.around(circles)) 
for i in circles[0,:]: 
    # draw the outer circle 
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) 
    # draw the center of the circle 
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) 

cv2.imshow('detected circles',cimg) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

ich das Bild in Graustufen-Modus geladen habe, gibt es immer noch mir einen Fehler

"circles = np.uint8(np.around(circles)) 
File "/usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 2277, in around 
    return _wrapit(a, 'round', decimals, out) 
File "/usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 37, in _wrapit 
    result = getattr(asarray(obj),method)(*args, **kwds) 
AttributeError: rint" 

Ich kann das Bild nicht veröffentlichen, weil mein gegenwärtigen Rufes.

+0

plz die Einbuchtung Fehler ignorieren – Anuradha

+0

diesen Code versuchen: https://github.com/Itseez/opencv/blob/master/samples/python2/houghcircles.py –

+0

Abid Dank, habe ich versucht, den Code aber es gibt mir cv2. Kreis (cimg, (Kreise [0] [i] [0], Kreise [0] [i] [1]), Kreise [0] [i] [2], (0, 0, 255), 3, cv .LINE_AA) AttributeError: 'Modul' Objekt hat kein Attribut 'LINE_AA' – Anuradha

Antwort

19

In Ihrem Code muss eine kleine Korrektur vorgenommen werden.

Sie laden ein Bild in Graustufen und konvertieren es dann erneut in Graustufen unter Verwendung von cv2.cvtColor, was ein ungültiger Vorgang ist.

Alternativ bietet OpenCV eine sample for circle detection using Hough Circles method. Du kannst es versuchen.

Wenn Sie OpenCV 2.x Version verwenden, ändern Sie einfach die cv2.LINE_AA zu cv2.CV_AA oder einen anderen LineType, den Sie bevorzugen.

+0

Der von Ihnen gepostete Link ist tot. – Kapocsi