资源简介
基于opencv 动态车辆的识别和追踪,程序对背景进行训练建模,并对背景帧进行二值,膨胀处理
代码片段和文件信息
// CarDetectAndTrack.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
using namespace std;
//对轮廓按面积降序排列
bool biggerSort(vector v1 vector v2)
{
return cv::contourArea(v1)>cv::contourArea(v2);
}
int _tmain(int argc _TCHAR* argv[])
{
//视频不存在,就返回
cv::VideoCapture cap(“camera1.mov“);
if(cap.isOpened()==false)
return 0;
//定义变量
int i;
cv::Mat frame; //当前帧
cv::Mat foreground; //前景
cv::Mat bw; //中间二值变量
cv::Mat se; //形态学结构元素
//用混合高斯模型训练背景图像
cv::BackgroundSubtractorMOG mog;
for(i=0;i<100;++i)
{
cout<<“正在训练背景:“< cap>>frame;
if(frame.empty()==true)
{
cout<<“视频帧太少,无法训练背景“< getchar();
return 0;
}
mog(frameforeground0.01);
}
//目标外接框、生成结构元素(用于连接断开的小目标)
cv::Rect rt;
se=cv::getStructuringElement(cv::MORPH_RECTcv::Size(55));
//统计目标直方图时使用到的变量
vector vecImg;
vector vecChannel;
vector vecHistSize;
vector vecRange;
cv::Mat mask(frame.rowsframe.colscv::DataType::type);
//变量初始化
vecChannel.push_back(0);
vecHistSize.push_back(32);
vecRange.push_back(0);
vecRange.push_back(180);
cv::Mat hsv; //HSV颜色空间,在色调H上跟踪目标(camshift是基于颜色直方图的算法)
cv::MatND hist; //直方图数组
double maxVal; //直方图最大值,为了便于投影图显示,需要将直方图规一化到[0 255]区间上
cv::Mat backP; //反射投影图
cv::Mat result; //跟踪结果
//视频处理流程
while(1)
{
//读视频
cap>>frame;
if(frame.empty()==true)
break;
//生成结果图
frame.copyTo(result);
//检测目标
mog(frameforeground0.05);
cv::imshow(“混合高斯检测前景“foreground);
cv::moveWindow(“混合高斯检测前景“4000);
//对前景进行中值滤波、形态学膨胀操作,以去除伪目标和接连断开的小目标(一个大车辆有时会断开成几个小目标)
cv::medianBlur(foregroundforeground5);
cv::imshow(“中值滤波“foreground);
cv::moveWindow(“中值滤波“8000);
cv::morphologyEx(foregroundforegroundcv::MORPH_DILATEse);
//检索前景中各个连通分量的轮廓
foreground.copyTo(bw);
vector> contours;
cv::findContours(bwcontourscv::RETR_EXTERNALcv::CHAIN_APPROX_NONE);
if(contours.size()<1)
continue;
//对连通分量进行排序
std::sort(contours.begin()contours.end()biggerSort);
//结合camshift更新跟踪位置(由于camshift算法在单一背景下,跟踪效果非常好;
//但是在监控视频中,由于分辨率太低、视频质量太差、目标太大、目标颜色不够显著
//等各种因素,导致跟踪效果非常差。 因此,需要边跟踪、边检测,如果跟踪不够好,
//就用检测位置修改
cv::cvtColor(framehsvcv::COLOR_BGR2HSV);
vecImg.clear();
vecImg.push_back(hsv);
for(int k=0;k {
//第k个连通分量的外接矩形框
if(cv::contourArea(contours[k]) break;
rt=cv::boundingRect(contours[k]);
mask=0;
mask(rt)=255;
//统计直方图
cv::calcHist(vecImgvecChannelmaskhistvecHistSizevecRange);
cv::minMaxLoc(hist0&maxVal);
hist=hist*255/maxVal;
//计算反向投影图
cv::calcBackProject(vecImgvecChannelhistbackPvecRange1);
//camshift跟踪位置
cv::Rect search=rt;
cv::RotatedRect rrt=cv::CamShift(backPsearchcv::TermCriteria(cv::TermCriteria::COUNT+cv::
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3980 2015-12-29 19:50 CarDetectAndTrack\CarDetectAndTrack\CarDetectAndTrack.cpp
文件 5049 2014-03-14 09:43 CarDetectAndTrack\CarDetectAndTrack\CarDetectAndTrack.vcxproj
文件 1321 2014-03-14 09:22 CarDetectAndTrack\CarDetectAndTrack\CarDetectAndTrack.vcxproj.filters
文件 143 2014-03-14 09:22 CarDetectAndTrack\CarDetectAndTrack\CarDetectAndTrack.vcxproj.user
文件 406 2014-03-14 09:23 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.exe.em
文件 472 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.exe.em
文件 381 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.exe.intermediate.manifest
文件 92 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.lastbuildstate
文件 3724 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.log
文件 664459 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.obj
文件 1179648 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.pch
文件 224 2014-03-14 09:23 CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack_manifest.rc
文件 5586 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\cl.command.1.tlog
文件 54424 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CL.read.1.tlog
文件 4272 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\CL.write.1.tlog
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
文件 2 2014-03-16 18:54 CarDetectAndTrack\CarDetectAndTrack\Debug\li
............此处省略119个文件信息
相关资源
- opencv-4.10.zip
- 人脸识别,基于VS+openCV
- opencv3.4.0 vs2017编译的x86版本,可以直
- opencv-3.4.0 x86的Debug 和Release版本
- learning opencv3英文原版电子版学习ope
- opencv3.4.1+contrib+win10+vs2017已经编译好的
- opencv下实现显示并更改摄像头分辨率
- 利用openCV识别图片Demo
- OpenCV1.1版
- 基于opencv实现 LK跟踪算法
- OpenCV 3 Computer Vision Application Programmi
- cvMatchShapes
- 贾志刚Opencv图像处理视频教程学习笔
- opencv_3rdparty-ffmpeg-master_20161202.zip
- 学习opencv pdf
- vs2010+opencv 图像处理,边缘检测,可设
- OpenCV By Example.pdf
- opencv实现图像旋转任意角度边界正好
- zw_学习OpenCV(中文版).zip
- 学习OpenCV(中文版)pdf155532
- opencv3 神经网络字母识别源码.zip
- lbp特征提取代码
- 图片尺寸与格式转换软件.7z
- opencv 2.3.1
- ippicv_2020_win_intel64_20191018_general.zip
- OPENCV车道检测与车辆识别
- opencv立体匹配算法BM+SGBM+VAR运行官方立
- 基于opencv的手写数字字符识别
- opencv数字识别更新
- OpenCV 2.4.3编译生成的libdllinclude文件
评论
共有 条评论