光流估计

光流估计

在这里插入图片描述

Lucas-Kanade算法

在这里插入图片描述
在这里插入图片描述

import cv2
import numpy as np

cap=cv2.VideoCapture('../res/test.avi')

feature_params=dict(maxCorners=100, qualityLevel=0.3, minDistance=7)

lk_params=dict(winSize=(15, 15), maxLevel=2)

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(True):
    ret, frame=cap.read()
    frame_gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    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=cv2.line(mask, (a,b), (c,d), color[i].tolist(), 2)
        frame=cv2.circle(frame, (a, b), 5, color[i].tolist(), -1)
    img = cv2.add(frame, mask)
    cv2.imshow('frame',img)
    k=cv2.waitKey(150) & 0xff
    if k==27:
        break
    old_gray = frame_gray.copy()
    p0=good_new.reshape(-1,1,2)
    
cap.release()
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

发布了113 篇原创文章 · 获赞 103 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Deep___Learning/article/details/103988255