kussa 来回答 运动目标检测

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:17:27
你有没有当时给我的 只有二值化的那个代码的算法流程? 或者能不能给我简单地讲那个代码里面用了哪些函数,功能是什么,在代码里面怎么工作的?请你认为最重要的,值得讲的地方,给我简单地讲一下好吗 ?举三四个重要的函数就行(c++或opencv的) 。 针对我发给你的代码说也行。 又麻烦你了,万分抱歉! 这个不是很急。

其实核心的就那么一句
cvAbsDiff(pFrameMat, pBkMat, pFrMat);

这点我给你在最初的帖子中就讲过了。在你提到的应用环境下(背景简单不变化),用当前帧(pFrameMat)减去背景帧pBkMat)得到的就是运动的图像(存入pFrMat),连续播放这些图像就是了。

这句代码的前面,是一些准备工作,如分配空间什么的,这些在注释中都有了。还有是在第一帧的时候提取背景信息存入pBkMat(认为此时运动物体未进入场景),就是下面这部分代码:

//如果是第一帧,需要申请内存,并初始化
if(nFrmNum == 1)
{
pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);
pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);

img = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);

pBkMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrHUMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrCopyMat = cvCreateMat(pFrame->heig