When I run cv2.HoughCircles() I am getting the error
Traceback (most recent call last): File "cv.py", line 1, in <module> import cv2,cv File "/home/jestinjoy/cv.py", line 19, in <module> circles = np.uint16(np.around(circles)) File "/usr/lib/pymodules/python2.7/numpy/core/fromnumeric.py", line 2277, in around return _wrapit(a, 'round', decimals, out) File "/usr/lib/pymodules/python2.7/numpy/core/fromnumeric.py", line 37, in _wrapit result = getattr(asarray(obj),method)(*args, **kwds) AttributeError: rint
My code is
GNU nano 2.2.6 File: cv.py
import cv2,cv import numpy as np cv2.namedWindow("preview") vc = cv2.VideoCapture(0) if vc.isOpened(): # try to get the first frame rval, frame = vc.read() else: rval = False while rval: cv2.imshow("preview", frame) rval, frame = vc.read() img = cv2.medianBlur(frame,5) imgg = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) cimg = cv2.cvtColor(imgg,cv2.COLOR_GRAY2BGR) circles = cv2.HoughCircles(imgg,cv2.cv.CV_HOUGH_GRADIENT,1,10,param1=100,param2=30,minRadius=5,maxRadius=20) circles = np.uint16(np.around(circles)) for i in circles[0,:]: cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),1) # draw the outer circle cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) # draw the center of the circle key = cv2.waitKey(20) if key == 27: # exit on ESC break cv2.destroyWindow("preview")
Advertisement
Answer
you are not checking if you circles is None. If you do that, it works:
import cv2 import numpy as np cv2.namedWindow("preview") vc = cv2.VideoCapture(0) if vc.isOpened(): # try to get the first frame rval, frame = vc.read() else: rval = False while rval: cv2.imshow("preview", frame) cv2.waitKey(1) rval, frame = vc.read() img = cv2.medianBlur(frame,5) imgg = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) cimg = cv2.cvtColor(imgg,cv2.COLOR_GRAY2BGR) circles = cv2.HoughCircles(imgg,cv2.cv.CV_HOUGH_GRADIENT,1,10,param1=100,param2=30,minRadius=5,maxRadius=20) if circles is None: continue print circles #circles = np.uint16(np.around(circles)) for i in circles[0,:]: cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),1) # draw the outer circle cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) # draw the center of the circle key = cv2.waitKey(20) if key == 27: # exit on ESC break cv2.destroyWindow("preview")
Output generated:
sam@tuwien:/tmp$ python cv.py VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument VIDIOC_QUERYMENU: Invalid argument [[[ 335.5 368.5 10.12422848]]] [[[ 334.5 386.5 10.12422848]]] [[[ 349.5 382.5 10.12422848]]] [[[ 392.5 365.5 10.12422848]]] [[[ 378.5 370.5 10.12422848]]] [[[ 378.5 368.5 12.34908867]]] [[[ 391.5 369.5 14.57738018]]] [[[ 379.5 370.5 10.12422848]]]