问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

基于opencv的静态背景下的运动目标计数,急求源代码,谢谢!

发布网友 发布时间:2022-05-16 16:48

我来回答

1个回答

热心网友 时间:2023-08-18 07:24

这只是一个静态背景的运动物体检测程序:
至于计数,我建议你使用先提取contour 然后计算coutour的number。

// 2012-5-8 21:05:30
// Moving object recognision
// By David Ding

#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
#include <iostream>
#include <string.h>
#include <vector>
#include <ctime>
#include <windows.h>

using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
//声明IplImage指针
IplImage* pFrame = NULL;
IplImage* pFrImg = NULL;
IplImage* pBkImg = NULL;

CvMat* pFrameMat = NULL;
CvMat* pFrMat = NULL;
CvMat* pBkMat = NULL;

CvCapture* pCapture = NULL;

int nFrmNum = 0;

//创建窗口
cvNamedWindow("video", 1);
cvNamedWindow("background",1);
cvNamedWindow("foreground",1);
//使窗口有序排列
cvMoveWindow("video", 30, 0);
cvMoveWindow("background", 360, 0);
cvMoveWindow("foreground", 690, 0);

if( argc > 2 )
{
fprintf(stderr, "Usage: bkgrd [video_file_name]\n");
return -1;
}

//打开摄像头
if (argc ==1)
if( !(pCapture = cvCaptureFromCAM(-1)))
{
fprintf(stderr, "Can not open camera.\n");
return -2;
}

//打开视频文件
if(argc == 2)
if( !(pCapture = cvCaptureFromFile(argv[1])))
{
fprintf(stderr, "Can not open video file %s\n", argv[1]);
return -2;
}

//逐帧读取视频
while(pFrame = cvQueryFrame( pCapture ))
{
nFrmNum++;

//如果是第一帧,需要申请内存,并初始化
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);

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

//转化成单通道图像再处理
cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);
cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);

cvConvert(pFrImg, pFrameMat);
cvConvert(pFrImg, pFrMat);
cvConvert(pFrImg, pBkMat);
}
else
{
cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);
cvConvert(pFrImg, pFrameMat);
//高斯滤波先,以平滑图像
//cvSmooth(pFrameMat, pFrameMat, CV_GAUSSIAN, 3, 0, 0);

//当前帧跟背景图相减
cvAbsDiff(pFrameMat, pBkMat, pFrMat);

//二值化前景图
cvThreshold(pFrMat, pFrImg, 60, 255.0, CV_THRESH_BINARY);

//进行形态学滤波,去掉噪音
//cvErode(pFrImg, pFrImg, 0, 1);
//cvDilate(pFrImg, pFrImg, 0, 1);

//更新背景
cvRunningAvg(pFrameMat, pBkMat, 0.003, 0);
//将背景转化为图像格式,用以显示
cvConvert(pBkMat, pBkImg);

//显示图像
cvShowImage("video", pFrame);
cvShowImage("background", pBkImg);
cvShowImage("foreground", pFrImg);

//如果有按键事件,则跳出循环
//此等待也为cvShowImage函数提供时间完成显示
//等待时间可以根据CPU速度调整
if( cvWaitKey(2) >= 0 )
break;

}

}

//销毁窗口
cvDestroyWindow("video");
cvDestroyWindow("background");
cvDestroyWindow("foreground");

//释放图像和矩阵
cvReleaseImage(&pFrImg);
cvReleaseImage(&pBkImg);

cvReleaseMat(&pFrameMat);
cvReleaseMat(&pFrMat);
cvReleaseMat(&pBkMat);

cvReleaseCapture(&pCapture);

return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕四个月补钙可以吗 孕妇吃什么时候钙片好 孕妇吃什么钙片最好 怀孕补钙是必须的吗?孕妇钙片品牌哪个好? ...在长高的黄金发育时期,会影响容貌五官的变化吗,不仅没有发育到变... 冬至吃饺子的诗词 立冬吃饺子的暖心诗词 宁波全封闭学校有哪些 宁波市北仑区小港镇会计学校在那? 或红联镇也可以 江南教育集团小港中心幼儿园园况介绍 红联哪里有报暑假班 OpenCV 膨胀/腐蚀程序的问题. 饿饿饿饿饿饿饿饿( ) 满汉全席有多少道菜?有多少道汤啊?要全部尝个遍听说要吃一个月!真的吗 试论上海富昱特公司是否具有原告主体资格 求电影霹雳娇娃1和2英语中字!发到我的网盘谢谢! 佛教理论陷阱和理论缺陷具体 信阳淮滨一日游作文 信阳潢川街上卖的像黑豆一样的东西是什么 河南信阳潢川方言,机林子,是什么 初音岛1北美版下载 在信阳卖的类似山药蛋一样的东西水里长的叫啥名字啊? 信阳地区池塘里的丁丁子儿也有叫梓溜子(方言),学名叫啥 华硕电脑型号:x552v充电器的电伏是多少 戴尔笔记本电脑充电器输出电压是几伏?三根输出线白、黑、蓝哪个是正极?电压相等吗? 笔记本电脑用的充电器是多大的,几安,几伏, 请问大神们 笔记本电脑的充电器输出是多少伏的,,?请问我的这个输出是多少伏的,,? 洗发萃乳是什么 润发精华乳怎么用 润发精华乳可以洗头皮吗 澳宝香氛洗发精华乳对头发有什么好处? 作文的结构如何写 你们怎么看待年代感? 春秋时期的同姓封国 正午阳光荣誉出品乔家的儿女豆瓣开分8.7,年代元素有哪些? 最有年代感的动漫都有哪些? 商丘市到上蔡县多义公里 封丘县离上蔡县多远 阚清子复古风穿搭真美,绿色套装低调又高级,头戴发带有年代感吗? 河南上蔡县距河北邯郸大名县多少公里? 指尖少年首播,服化年代感满满,龚俊凤梨头造型有多酷? 姓蔡的名人??? 真相实验室:防辐射服对孕妇到底有没有帮助 现实生活中怎样玩象明星大侦探的游戏 封面既要表达历史年代感 厚重,又要有现代感,时尚设计元素。 你会用什么颜色组合 求小说题材和人物名字 说一个人穿衣风格有年代感是什么意思? 神话二之详细剧本大纲小说txt全集免费下载 最精彩的动漫情节? 我想问下公众号被关注了,自动回复带粉丝名字的欢迎句子怎么弄的? 直经40公分牛皮鼓什么价格?