关键点追踪--光流估计

简介: 利用光流估计进行关键点追踪

光流估计,会捕获第一帧的关键点然后对关键点进行追踪

详细代码如下:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
feature_params = dict(maxCorners=100, qualityLevel=0.5, minDistance=7) #角点加测的参数

lk_params = dict(winSize=(30, 30), maxLevel=3)#Lucas kanade参数
#宽度和最大金字塔数
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:
    re, 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)):
        # enumerate同时列出数据和数据下标
        #zip()将对象中对应元素打包成远组,返回元组列表
        a, b = new.ravel() #将多维数组转换为一堆数组
        c, d = old.ravel()
        line = cv2.line(mask, (a, b), (c, d), (0, 0, 255), 2) #将矩阵和数组转化为列表
        frame = cv2.circle(frame, (a, b), 5, (255, 0, 0), -1)#将矩阵和数组转化为列表
    img = cv2.add(frame, mask)#两个图像相加
    cv2.imshow('frame', img)
    cv2.imshow("line", frame)
    cv2.imshow('mask', line)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cv2.destroyAllWindows()
cap.release()
目录
相关文章
|
5月前
|
传感器 算法 数据处理
yolo目标检测+目标跟踪+车辆计数+车辆分割+车道线变更检测+速度估计
yolo目标检测+目标跟踪+车辆计数+车辆分割+车道线变更检测+速度估计
|
5月前
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
|
4月前
|
编解码 资源调度 算法
技术心得记录:小波变化与小波降噪
技术心得记录:小波变化与小波降噪
|
5月前
|
存储 计算机视觉 流计算
【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
210 0
|
机器学习/深度学习 传感器 算法
垂直腔表面发射激光器极化噪声的建模与分析论文复现
垂直腔表面发射激光器极化噪声的建模与分析论文复现
|
机器学习/深度学习 传感器 算法
【滤波跟踪】基于IMM多模滤波器和全局最近邻GNN算法实现雷达多机动目标自适应跟踪附matlab代码
【滤波跟踪】基于IMM多模滤波器和全局最近邻GNN算法实现雷达多机动目标自适应跟踪附matlab代码
【滤波跟踪】基于IMM多模滤波器和全局最近邻GNN算法实现雷达多机动目标自适应跟踪附matlab代码
|
数据采集 监控 算法
【分布鲁棒、状态估计】分布式鲁棒优化电力系统状态估计研究[几种算法进行比较](Matlab代码实现)
【分布鲁棒、状态估计】分布式鲁棒优化电力系统状态估计研究[几种算法进行比较](Matlab代码实现)
|
自动驾驶 机器人
【误差自适应跟踪方法AUV】自适应跟踪(EAT)方法研究(Matlab代码&Simulin实现)
【误差自适应跟踪方法AUV】自适应跟踪(EAT)方法研究(Matlab代码&Simulin实现)
|
资源调度
【鲁棒、状态估计】用于电力系统动态状态估计的鲁棒迭代扩展卡尔曼滤波器研究(Matlab代码实现)
【鲁棒、状态估计】用于电力系统动态状态估计的鲁棒迭代扩展卡尔曼滤波器研究(Matlab代码实现)
|
传感器 机器学习/深度学习 算法
【滤波跟踪】基于变分贝叶斯自适应卡尔曼滤波器VPAKF实现无人机状态估计附matlab代码
【滤波跟踪】基于变分贝叶斯自适应卡尔曼滤波器VPAKF实现无人机状态估计附matlab代码