ОК, я понял это.Мне пришлось уменьшить беспорядок с параметрами в HoughCircles
.Я изменил circ = cv2.HoughCircles(resized,cv2.HOUGH_GRADIENT,1,30,param1=50,param2=75, minRadius=0,maxRadius=0)
на cv2.HoughCircles(resized,cv2.HOUGH_GRADIENT,1,50,param1=50,param2=35, minRadius=0,maxRadius=0)
, что позволяет коду отображать видеопоток, обнаруживая круги с разумной частотой кадров.Также спасибо @ZdaR за помощь.
Вот код, который работает
import cv2
import numpy as np
import serial
cap = cv2.VideoCapture(1)
width = 320
height = 240
dim = (width, height)
while(True):
gray = cv2.medianBlur(cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY),5)
resized = cv2.resize(gray,dim,interpolation = cv2.INTER_AREA)
circ = cv2.HoughCircles(resized,cv2.HOUGH_GRADIENT,1,50,param1=50,param2=35,
minRadius=0,maxRadius=0)
cv2.imshow('video',resized)
if circ is not None:
circ = np.uint16(np.around(circ))[0,:]
print(circ)
for j in circ:
cv2.circle(resized, (j[0], j[1]), j[2], (0, 255, 0), 2)
cv2.imshow('video',resized)
if cv2.waitKey(1)==27:# esc Key
break
cap.release()
cv2.destroyAllWindows()