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

资源简介

基于Opencv的红外运动目标识别与跟踪,内附红外演示与源代码。

资源截图

代码片段和文件信息

#include “cv.h“
#include “highgui.h“
#include 
#include 
#include 
#include 
#include 
#include
#include 

//跟踪参数
const double MHI_DURATION = 0.5;//最大跟踪时间
const double MAX_TIME_DELTA = 0.5;
const double MIN_TIME_DELTA = 0.05;
const int N = 3;
const int CONTOUR_MAX_AERA = 100;//矩形面积

IplImage **buf = 0;
int last = 0;
int flag;
IplImage *mhi = 0; // MHI: motion history image
CvConnectedComp *cur_comp min_comp;
CvConnectedComp comp;
CvMemStorage *storage;
CvPoint pt[4];
// img – 输入视频帧
// dst – 检测结果
void update_mhi(IplImage* img IplImage* dst int diff_threshold)
{
double timestamp = clock() / 100.; //获取当前时间
CvSize size = cvSize(img->width img->height);
int i idx1 idx2;
IplImage* silh;
IplImage* pyr = cvCreateImage(cvSize((size.width & -2) / 2 (size.height & -2) / 2) 8 1);
CvMemStorage *stor;
CvSeq *cont;
if (!mhi || mhi->width != size.width || mhi->height != size.height)
{
if (buf == 0)
{
buf = (IplImage**)malloc(N*sizeof(buf[0]));//动态内存分配
memset(buf 0 N*sizeof(buf[0]));
}

for (i = 0; i < N; i++)
{
cvReleaseImage(&buf[i]);
buf[i] = cvCreateImage(size IPL_DEPTH_8U 1);
cvZero(buf[i]);
}
cvReleaseImage(&mhi);
mhi = cvCreateImage(size IPL_DEPTH_32F 1);
cvZero(mhi);
}
cvCvtColor(img buf[last] CV_BGR2GRAY); //rgb->gray
idx1 = last;
idx2 = (last + 1) % N;
last = idx2;
// 做帧差
silh = buf[idx2];
cvAbsDiff(buf[idx1] buf[idx2] silh); //两帧差异
// 对差图像做二值化
cvThreshold(silh silh 30 255 CV_THRESH_BINARY); //src(xy)>threshold dst(xy) = max_value; 否则dst(xy)=0;

cvUpdateMotionHistory(silh mhi timestamp MHI_DURATION); //更新像素点的运动历史
cvCvtScale(mhi dst 255. / MHI_DURATION
(MHI_DURATION - timestamp)*255. / MHI_DURATION);//timestamp是时间戳;MHI_DURATION,获得的是当前时间
cvCvtScale(mhi dst 255. / MHI_DURATION 0);

// 中值滤波,消除小的噪声
cvSmooth(dst dst CV_MEDIAN 3 0 0 0);

// 向下采样,去掉噪声
cvPyrDown(dst pyr 7);
cvDilate(pyr pyr 0 1); // 做膨胀操作,消除目标的不连续空洞
cvPyrUp(pyr dst 7);
//
// 下面的程序段用来找到轮廓
//
// Create dynamic structure and sequence.
stor = cvCreateMemStorage(0);
cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT sizeof(CvSeq) sizeof(CvPoint) stor);

// 找到所有轮廓
cvFindContours(dst stor &cont sizeof(CvContour)
CV_RETR_LIST CV_CHAIN_APPROX_SIMPLE cvPoint(0 0));
// 直接使用CONTOUR中的矩形来画轮廓
for (; cont; cont = cont->h_next)
{
flag = 0;
CvRect r = ((CvContour*)cont)->rect;
if (r.height * r.width > CONTOUR_MAX_AERA)
{
cvRectangle(img cvPoint(r.x r.y)
cvPoint(r.x + r.width r.y + r.height)
CV_RGB(255 0 0) 1 CV_AA 0);
flag = 1;
}
else
{
flag = 0;
}
}
cvReleaseMemStorage(&stor);
cvReleaseImage(&pyr);
}

int main(int argc char** argv)
{
IplImage* motion = 0;
CvCapture* capture = 0; //视频获取结构 
while (1){
capture = cvCreateFileCapture(“D:\\IR_object\\IR3.avi“);


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-06-05 10:32  红外目标识别与跟踪\
     目录           0  2015-06-05 10:31  红外目标识别与跟踪\IR\
     目录           0  2015-06-05 10:31  红外目标识别与跟踪\IR\Debug\
     文件       67584  2015-05-25 17:12  红外目标识别与跟踪\IR\Debug\IR.exe
     文件      676676  2015-05-25 17:12  红外目标识别与跟踪\IR\Debug\IR.ilk
     文件     2027520  2015-05-25 17:12  红外目标识别与跟踪\IR\Debug\IR.pdb
     目录           0  2015-06-05 10:31  红外目标识别与跟踪\IR\IR\
     目录           0  2015-06-05 10:31  红外目标识别与跟踪\IR\IR\Debug\
     文件        1423  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.log
     文件      211923  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.obj
     目录           0  2015-06-05 10:31  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\
     文件       35898  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\CL.read.1.tlog
     文件         268  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\CL.write.1.tlog
     文件         149  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\IR.lastbuildstate
     文件         434  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\cl.command.1.tlog
     文件        1464  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\link.command.1.tlog
     文件        3984  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\link.read.1.tlog
     文件         250  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\IR.tlog\link.write.1.tlog
     文件     1108992  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\vc120.idb
     文件     1339392  2015-05-25 17:12  红外目标识别与跟踪\IR\IR\Debug\vc120.pdb
     文件        4331  2015-05-25 17:11  红外目标识别与跟踪\IR\IR\IR.cpp
     文件        4793  2015-05-25 16:40  红外目标识别与跟踪\IR\IR\IR.vcxproj
     文件         943  2015-05-25 16:40  红外目标识别与跟踪\IR\IR\IR.vcxproj.filters
     文件    40173568  2015-06-04 18:23  红外目标识别与跟踪\IR\IR.sdf
     文件         952  2015-05-25 16:37  红外目标识别与跟踪\IR\IR.sln
     文件       15360  2015-06-04 18:23  红外目标识别与跟踪\IR\IR.v12.suo
     文件     1675958  2012-10-31 11:05  红外目标识别与跟踪\IR.avi
     文件      337142  2012-10-31 11:05  红外目标识别与跟踪\IR3.avi
     文件       17408  2015-05-25 16:35  红外目标识别与跟踪\ms.v12.suo

评论

共有 条评论

相关资源