c语言运动目标检测,VIBE运动目标检测算法实现
最后附上调用的main函数;
int _tmain(int argc, _TCHAR* argv[])
{
CvCapture *capture=NULL;
IplImage* frame=NULL;
IplImage* pForeImg=NULL;
IplImage* segImg=NULL;
char *file_path=”E:\\testVideo\\VTS_01_4.avi”; // m1 test2 锦带河 VTS_01_4_2 head rear VTS_01_6_2 VTS_01_4
//const char* file_path=”E:\\suntektechvideo\\锦带河.avi”; //test2
capture=cvCreateFileCapture(file_path);
if (!capture)
{
//cout<
return -1;
}
frame=cvQueryFrame(capture);
frame=cvQueryFrame(capture);
cvNamedWindow(“img”,1);
cvNamedWindow(“foreN”,1);
//cvNamedWindow(“seg”,1);
Vibe* pV=new Vibe(frame);
while(frame=cvQueryFrame(capture))
{
pV->Detect(frame);
pForeImg=pV->GetForeground();
//segImg=pV->GetSegMask();
//frame->origin=1;
//pForeImg->origin=1;
cvShowImage(“img”,frame);
cvShowImage(“foreN”,pForeImg);
//cvShowImage(“seg”,segImg);
cvWaitKey(1);
}
cvReleaseImage(&frame);
cvReleaseImage(&pForeImg);
cvReleaseCapture(&capture);
return 0;
}
代码没做过多的注释,但现有的注释应该对于理解代码足够了。另外,对于计算机视觉里的任何一种算法都不是万能的,VIBE也不例外,只能说VIBE相对其他算法有一定的优势,但是还是有相当的不足,其pixel-wise-based的灰度建模方式解决不了pixel-wise建模算法共有的问题,其他必要辅助信息的融合是必要的。
还没有评论,来说两句吧...