• 大小: 30.32MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-01
  • 语言: 其他
  • 标签: opencv  

资源简介

基于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.embed.manifest

     文件        472  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\CarDetectAndTrack.exe.embed.manifest.res

     文件        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\link-cvtres.read.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link-cvtres.write.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1052-cvtres.read.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1052-cvtres.write.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1052.read.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1052.write.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1240-cvtres.read.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1240-cvtres.write.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1240.read.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1240.write.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1280-cvtres.read.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1280-cvtres.write.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1280.read.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.1280.write.1.tlog

     文件          2  2014-03-16 18:54  CarDetectAndTrack\CarDetectAndTrack\Debug\link.2252-cvtres.read.1.tlog

............此处省略119个文件信息

评论

共有 条评论