嗨,我是python和OpenCV的新手。使用下面的代码,我试图从网络摄像头流式传输并检测圈子。我试图在for循环中提取圆的中心和半径,然后绘制圆。每次这样做,都会出现以下错误。
ValueError:太多值无法解包(预期3)
任何有关为什么代码不起作用的帮助将不胜感激。谢谢
import cv2
import numpy as np
import sys
cap = cv2.VideoCapture(1)
while(True):
gray = cv2.medianBlur(cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY),5)
circ = cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,
minRadius=0,maxRadius=0)
for(x,y,r) in circ:
cv2.circle(gray,int(x),int(y),int(r),(0,255,0),2)
cv2.imshow('video',gray)
if cv2.waitKey(1)==27:# esc Key
break
cap.release()
cv2.destroyAllWindows()
编辑:回溯
回溯(最近通话最近): 在第11行的文件“ C:/Documents/pythonproj/webcameratest.py” 约(x,y,r): TypeError:“ NoneType”对象不可迭代
答案 0 :(得分:0)
尝试一下:
circ = np.uint16(np.around(circ))
for i in circ[0,:]:
cv2.circle(gray, (i[0], i[1]), i[2], (0, 255, 0), 2)
代替:
for(x,y,r) in circ:
cv2.circle(gray,int(x),int(y),int(r),(0,255,0),2)