Я хочу, чтобы фильтр Калмы исправлял мой круг Хафа
, потому что я обнаружил, что круг неточен
может научить меня вставлять фильтр Калмана в мой код?
хочу, чтобы калман исправлял каждый мой круг кадра
Я использую видео каждый кадр в моем круге
вот мой код
import numpy as np
import cv2
cap = cv2.VideoCapture(r"C:\Users\MarK\Desktop\Meeting\2020\eye_frame\eye video\video_eye4.mp4")
#fourcc = cv2.VideoWriter_fourcc(*'XVID')
#out = cv2.VideoWriter(r"C:\Users\MarK\Desktop\Meeting\2020\0618 meeting\video_eye4 sobel.avi",fourcc,20,(480,848))
kalman = cv2.KalmanFilter(4,2)
kalman.measurementMatrix = np.array([[1,0,0,0],[0,1,0,0]],np.float32)
kalman.transitionMatrix = np.array([[1,0,1,0],[0,1,0,1],[0,0,1,0],[0,0,0,1]],np.float32)
kalman.processNoiseCov = np.array([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],np.float32) * 0.03
kalman.statePre = np.array([[6],[6]],np.float32)
while(cap.isOpened):
ret, frame = cap.read()
if ret==False:
break
Gauss = cv2.GaussianBlur(frame,(3,3),3)
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
dst = cv2.filter2D(Gauss, -1, kernel=kernel)
gray = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY)
mask = np.zeros(gray.shape, dtype=np.uint8)
mask.fill(255)
mask = cv2.circle(mask, (270,370), 100, (0, 0, 0), -1)
maskimage=cv2.add(mask ,gray)
cv2.imshow("maskimage",maskimage)
canny = cv2.Canny(maskimage,25,38)
cv2.imshow("canny",canny)
circles= cv2.HoughCircles(canny, cv2.HOUGH_GRADIENT, 1, 2000, param1=60, param2=10, minRadius=50, maxRadius=80)
for circle in circles[0]:
x=int(circle[0])
y=int(circle[1])
r=int(circle[2])
print('圓的中心為(%s, %s), 半徑為%s.' % (x, y, r))
image = cv2.circle(frame, (x,y), r, (0,0,255), 1)
cv2.imshow("frame",image)
out.write(frame)
cv2.waitKey(50)
if cv2.waitKey(10) &0xFF ==ord('q'):
break
cap.release()
cv2.destroyAllWindows()
спасибо за помощь