import numpy as np
import cv2
cap = cv2.VideoCapture("/home/indra/opencv-4.8.0/samples/data/vtest.avi")
# ShiTomas角点检测的参数
feature_params = dict(maxCorners =100,qualityLevel=0.3,minDistance=7,blockSize=7)
# 金字塔LK算法参数
lk_params = dict(winSize=(15,15),maxLevel=2,criteria=(cv2.TERM_CRITERIA_EPS|cv2.TermCriteria_COUNT,10,0.03))
# 创建随机颜色
color = np.random.randint(0,255,(100,3))
ret,old_frame = cap.read()
old_gray = cv2.cvtColor(old_frame,cv2.COLOR_BGR2GRAY)
p0 = cv2.goodFeaturesToTrack(old_gray,mask=None,**feature_params)
mask = np.zeros_like(old_frame)
while(1):
ret,frame = cap.read()
if ret is True:
frame_gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
else:
break
p1,st,err = cv2.calcOpticalFlowPyrLK(old_gray,frame_gray,p0,None,**lk_params)
good_new =p1[st==1]
good_old =p0[st==1]
for i,(new,old) in enumerate(zip(good_new,good_old)):
a,b = new.ravel()
c,d = old.ravel()
mask
OpenCV稀疏光流法可直接运行的例程(python)
于 2024-02-14 12:06:15 首次发布