2014-02-20 2 views
5

Я пытался обнаружить круги на черном фоне с красными круглыми объектами.Обнаружение круга в открытом cv с использованием 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() 

Я загрузил изображение в режиме градаций серого, до сих пор он дает мне ошибку

"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" 

Я не могу отправить изображение из-за моей нынешней репутации.

+0

плз игнорировать ошибки отступов – Anuradha

+0

попробуйте этот код: https://github.com/Itseez/opencv/blob/master/samples/python2/houghcircles.py –

+0

Абид спасибо, я попробовал код, но это дает мне CV2. circle (cimg, (круги [0] [i] [0], круги [0] [i] [1]), круги [0] [i] [2], (0, 0, 255), 3, cv .LINE_AA) AttributeError: объект 'module' не имеет атрибута 'LINE_AA' – Anuradha

ответ

19

В вашем коде есть небольшая поправка.

Вы загружаете изображение в оттенках серого, а затем снова преобразуете его в оттенки серого, используя cv2.cvtColor, что является недопустимой операцией.

В качестве альтернативы, OpenCV предоставляет sample for circle detection using Hough Circles method. Вы можете попробовать это.

Если вы используете версию OpenCV 2.x, просто измените cv2.LINE_AA на cv2.CV_AA или любой другой тип линии, который вы предпочитаете.

+0

Ссылка, которую вы опубликовали, мертва. – Kapocsi

Смежные вопросы