我想构建一个CV Bot,它必须通过跟随圆圈来确定路径。这是确定圆和圆心的简单代码。 但是,我在使用HoughCircle函数时遇到了麻烦,它导致以下错误。 我正在使用实时供稿作为来源。到目前为止,我的主要网络摄像头。稍后将使用机器人网络摄像头。
错误消息:
AttributeError:'NoneType'对象没有属性'rint'
上述异常是以下异常的直接原因:
_wrapit中的文件“ H:\ Zine \ IP \ venv \ lib \ site-packages \ numpy \ core \ fromnumeric.py”,第47行 TypeError:ufunc循环不支持NoneType类型的参数0,该参数没有可调用的rint方法
我试图更改数据类型,但是它不起作用。
这是完整的代码:
import cv2, numpy as np
# cap=cv2.VideoCapture("opencv/hough/slow_coins.mp4")
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
frame = cv2.medianBlur(frame,5)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# cv2.imshow("check",frame)
# cv2.waitKey(0)
# print(np.dtype(gray))
gray_8=np.int8(gray)
print(gray.shape)
# HughCircles Detection TEST
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 50,param1=50, param2=30, minRadius=95,
maxRadius=150)
# circles = cv2.HoughCircles()
circles = np.uint16(np.around(circles))
ret, thresh = cv2.threshold(gray, 127, 255, 0)
# calculate moments of binary image
M = cv2.moments(thresh)
# calculate x,y coordinate of center
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
if circles.all != None:
for i in circles[0, :]:
# draw the outer circle
cv2.circle(frame, (i[0], i[1]), i[2], (0, 255, 0), 2)
# draw the center of the circle
cv2.circle(frame, (i[0], i[1]), 2, (0, 0, 255), 3)
cv2.line(frame, (i[0], i[1]), (cX, cY), (0, 0, 0), 2)
# Display the resulting frame
cv2.waitKey(1500)
cv2.imshow('live_hough_circlesq', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break