资源简介
用opencv2.3.1在vs2008开发的l-k光流法的运动估计,有详细的注释
代码片段和文件信息
/************************************************************************
* Copyright(c) 2011 Yang Xian
* All rights reserved.
*
* File: opticalFlow.cpp
* Brief: lk光流法做运动目标检测
* Version: 1.0
* Author: Yang Xian
* Email: xyang2011@sinano.ac.cn
* Date: 2011/11/18
* History:
************************************************************************/
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
void tracking(Mat &frame Mat &output);
bool addNewPoints();
bool acceptTrackedPoint(int i);
string window_name = “optical flow tracking“;
Mat gray; // 当前图片
Mat gray_prev; // 预测图片
vector points[2]; // point0为特征点的原来位置,point1为特征点的新位置
vector initial; // 初始化跟踪点的位置
vector features; // 检测的特征
int maxCount = 500; // 检测的最大特征数
double qLevel = 0.01; // 特征检测的等级
double minDist = 10.0; // 两特征点之间的最小距离
vector status; // 跟踪特征的状态,特征的流发现为1,否则为0
vector err;
int main()
{
Mat frame;
Mat result;
// CvCapture* capture = cvCaptureFromCAM( -1 ); // 摄像头读取文件开关
VideoCapture capture(“bike.avi“);
if(capture.isOpened()/*capture*/) // 摄像头读取文件开关
{
while(true)
{
// frame = cvQueryframe( capture ); // 摄像头读取文件开关
capture >> frame;
if(!frame.empty())
{
tracking(frame result);
}
else
{
printf(“ --(!) No captured frame -- Break!“);
break;
}
int c = waitKey(100);
if( (char)c == 27 )
{
break;
}
}
}
return 0;
}
//////////////////////////////////////////////////////////////////////////
// function: tracking
// brief: 跟踪
// parameter: frame 输入的视频帧
// output 有跟踪结果的视频帧
// return: void
//////////////////////////////////////////////////////////////////////////
void tracking(Mat &frame Mat &output)
{
cvtColor(frame gray CV_BGR2GRAY);
frame.copyTo(output);
// 添加特征点
if (addNewPoints())
{
goodFeaturesToTrack(gray features maxCount qLevel minDist);
points[0].insert(points[0].end() features.begin() features.end());
initial.insert(initial.end() features.begin() features.end());
}
if (gray_prev.empty())
{
gray.copyTo(gray_prev);
}
// l-k光流法运动估计
calcOpticalFlowPyrLK(gray_prev gray points[0] points[1] status err);
// 去掉一些不好的特征点
int k = 0;
for (size_t i=0; i {
if (acceptTrackedPoint(i))
{
initial[k] = initial[i];
points[1][k++] = points[1][i];
}
}
points[1].resize(k);
initial.resize(k);
// 显示特征点和运动轨迹
for (size_t i=0; i {
line(output initial[i] points[1][i] Scalar(0 0 255));
circle(output points[1][i] 3 Scalar(255 0 0) -1);
}
// 把当前跟踪结果作为下一此参考
swap(points[1] points[0]);
swap(gray_prev gray);
imshow(window_name output);
}
////////////////////////////////////////////////////
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 446600 2011-02-16 14:14 OpticalFlow\Debug\bike.avi
文件 104448 2011-11-18 18:08 OpticalFlow\Debug\OpticalFlow.exe
文件 568612 2011-11-18 18:08 OpticalFlow\Debug\OpticalFlow.ilk
文件 1051648 2011-11-18 18:08 OpticalFlow\Debug\OpticalFlow.pdb
文件 446600 2011-02-16 14:14 OpticalFlow\OpticalFlow\bike.avi
文件 6048 2011-11-18 18:08 OpticalFlow\OpticalFlow\Debug\BuildLog.htm
文件 1511 2011-11-18 15:29 OpticalFlow\OpticalFlow\Debug\FeatureTracker.obj
文件 1511 2011-11-18 15:29 OpticalFlow\OpticalFlow\Debug\fr
文件 67 2011-11-18 18:08 OpticalFlow\OpticalFlow\Debug\mt.dep
文件 621 2011-11-18 18:08 OpticalFlow\OpticalFlow\Debug\OpticalFlow.exe.intermediate.manifest
文件 395199 2011-11-18 18:08 OpticalFlow\OpticalFlow\Debug\opticalFlow.obj
文件 355328 2011-11-18 18:08 OpticalFlow\OpticalFlow\Debug\vc90.idb
文件 520192 2011-11-18 18:08 OpticalFlow\OpticalFlow\Debug\vc90.pdb
文件 3837 2011-11-18 18:08 OpticalFlow\OpticalFlow\opticalFlow.cpp
文件 3772 2011-11-18 15:33 OpticalFlow\OpticalFlow\OpticalFlow.vcproj
文件 1423 2011-11-18 18:08 OpticalFlow\OpticalFlow\OpticalFlow.vcproj.HP98402794308.Administrator.user
文件 3058688 2011-11-18 18:08 OpticalFlow\OpticalFlow.ncb
文件 899 2011-11-18 10:55 OpticalFlow\OpticalFlow.sln
..A..H. 9728 2011-11-18 18:08 OpticalFlow\OpticalFlow.suo
目录 0 2011-11-18 18:08 OpticalFlow\OpticalFlow\Debug
目录 0 2011-11-18 18:08 OpticalFlow\Debug
目录 0 2011-11-18 18:08 OpticalFlow\OpticalFlow
目录 0 2011-11-18 15:30 OpticalFlow
----------- --------- ---------- ----- ----
6976732 23
- 上一篇:白车身FEMFAT疲劳分析流程
- 下一篇:视频前景提取基于opencv的运动物体检测
相关资源
- 视频前景提取基于opencv的运动物体检
- KCF视频目标跟踪OPENCV+VS+WIN
- cv100.dll、cxcore100.dll、cxts001.dll、high
- OpenNI、OpenCV安装与开发环境配置
- opencv特征提取 颜色直方图、纹理
- 基于opencv的图像检索系统
- 基本opencv的粒子滤波目标跟踪
- OpenCV上目标跟踪和行人跟踪需要的视
- OpenCV图像视频采集 DirectShow 64位32位库
-
opencvHaar特征进行的分类器-所有xm
- 视觉词袋训练
- vgg_generated_48,vgg_generated_64,vgg_gene
-
opencv的xm
l文件 - openCV 车牌分割
- 基于OpenCV的模拟仪表指针读数识别系
- 指纹提取与识别系统VC源码opencv
-
Measuring size of ob
jects in an image with - opencv实现两幅图像的极线约束匹配
- Criminisi算法OpenCV程序
- Kinect2.0+Opencv人体骨骼捕捉及绘制Vis
- OPENCV实现相机标定程序
- opencv 实现 meanshift 的目标跟踪
- opencv 的knn的训练数据
- 单高斯背景建模opencv
- opencv高斯滤波模板及其滤波
- 基于OpenCV实现Retinex
- 虹膜识别VC2008+opencv2.3.1源码,改编自
- protobuf-cpp-3.1.0.tar.gz 下载192823
- opencv_xxx.310d.lib
- openCV图像检测资源包
评论
共有 条评论