OpenCV 光流法总结

2024-05-13 07:04
文章标签 总结 opencv 光流法

本文主要是介绍OpenCV 光流法总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0.概述

1.原理说明

2.代码实现

#include <iostream>
#include <opencv2/opencv.hpp>int main(int argc, char** argv) {if(argc != 2) {std::cerr << "Usage: " << argv[0] << " <video_path>" << std::endl;return -1;}cv::VideoCapture cap(argv[1]);if(!cap.isOpened()) {std::cerr << "Error: Couldn't open the video file." << std::endl;return -1;}cv::Mat oldFrame, oldGray;std::vector<cv::Point2f> oldCorners;// Parameters for Shi-Tomasi corner detectionint maxCorners = 100;double qualityLevel = 0.3;double minDistance = 7;int blockSize = 7;cap >> oldFrame;cv::cvtColor(oldFrame, oldGray, cv::COLOR_BGR2GRAY);// Detect corners in the first framecv::goodFeaturesToTrack(oldGray, oldCorners, maxCorners, qualityLevel, minDistance, cv::Mat(), blockSize);// Color for optical flowcv::Scalar color(0, 255, 0);  // Greenwhile(true) {cv::Mat frame, gray;cap >> frame;if(frame.empty()) {break;}cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY);std::vector<cv::Point2f> newCorners;std::vector<uchar> status;std::vector<float> err;// Calculate optical flow using Lucas-Kanade methodcv::calcOpticalFlowPyrLK(oldGray, gray, oldCorners, newCorners, status, err);// Draw the motion vectorsfor(size_t i = 0; i < oldCorners.size(); i++) {if(status[i]) {cv::line(frame, oldCorners[i], newCorners[i], color, 2);cv::circle(frame, newCorners[i], 5, color, -1);}}// Display the resultcv::imshow("Optical Flow - Lucas-Kanade", frame);if(cv::waitKey(30) == 27) {  // Exit on pressing 'Esc' keybreak;}// Update the previous frame and cornersoldGray = gray.clone();oldCorners = newCorners;}cap.release();cv::destroyAllWindows();return 0;
}

这篇关于OpenCV 光流法总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985006

相关文章

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem