还有其他使用HoughCircles跟踪圆的方法吗?

时间:2019-12-17 09:06:38

标签: python opencv image-processing

我想构建一个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

0 个答案:

没有答案