资源简介
基于C++的三帧差法,经过验证OK。
代码片段和文件信息
/*
export PKG_CONFIG_PATH=/raid/zouyan/bin/lib/pkgconfig
export LD_LIBRARY_PATH=/raid/zouyan/bin/lib:$LD_LIBRARY_PATH
gcc ThreeFrmDiff.cpp -o ThreeFrmDiff ‘pkg-config --cflags opencv‘ \
‘pkg-config --libs opencv‘ -lm -L/usr/local/share/OpenCV/3rdparty/lib/ -lstdc++
*/
#include
#include
#include
int CallTime = 0;//定义调用次数计数器
IplImage* BackGroundImage;//上一帧灰度图
IplImage* DiffImage_1;//上一帧差分图的二值化图
void ThreeFrmDiff(IplImage* pColorIn)
{
CallTime++;
if(CallTime > 10)//防止溢出
{
CallTime = 10;
}
CvSize ImageSize = cvSize(pColorIn->widthpColorIn->height);
IplImage* GrayImage = cvCreateImage(ImageSizeIPL_DEPTH_8U1);//当前帧的灰度图
IplImage* GxImage = cvCreateImage(ImageSizeIPL_DEPTH_8U1);//当前帧的X方向梯度图
IplImage* GyImage = cvCreateImage(ImageSizeIPL_DEPTH_8U1);//当前帧的Y方向梯度图
IplImage* DiffImage = cvCreateImage(ImageSizeIPL_DEPTH_8U1);//当前帧的差分图
IplImage* DiffImage_2 = cvCreateImage(ImageSizeIPL_DEPTH_8U1);//前一帧差分图
IplImage* pyr = cvCreateImage(cvSize((ImageSize.width&-2)/2(ImageSize.height&-2)/2)81); //进行腐蚀去除噪声的中间临时图片
uchar* DiffImageData_2;
DiffImageData_2 = (uchar*)DiffImage_2->imageData;//得到前一帧差分图的数据
int heightwidthstep;//定义图像的高,宽,步长
int SumInRect = 0;//指定矩形内图像数据之和
int y1 y2 x1 x2;//对运动目标画框时的四个坐标点位置
y1 = 0;
y2 = 0;
x1 = 0;
x2 = 0;
char Kx[9] = {10-120-210-1};//X方向掩模,用于得到X方向梯度图
char Ky[9] = {121000-1-2-1};//Y方向掩模,用于得到Y方向梯度图
CvMat KXKY;
KX = cvMat(33CV_8SKx);//构建掩模内核
KY = cvMat(33CV_8SKy);//构建掩模内核
cvCvtColor(pColorInGrayImageCV_BGR2GRAY);//将当前帧转化为灰度图
cvSmooth(GrayImageGrayImageCV_GAUSSIAN77);//进行平滑处理
cvFilter2D(GrayImageGxImage&KXcvPoint(-1-1));//得到X方向的梯度图
cvFilter2D(GrayImageGyImage&KYcvPoint(-1-1));//得到Y方向的梯度图
cvAdd(GxImageGyImageGrayImageNULL);//得到梯度图
height = GrayImage->height;
width = GrayImage->width;
step = GrayImage->widthStep;
CvRect rect;//定义矩形框
if(CallTime == 1)//如果是第一帧
{
//对Image_1BackGroundImageDiffImage_1进行内存申请
BackGroundImage = cvCreateImage(ImageSizeIPL_DEPTH_8U1);
DiffImage_1 = cvCreateImage(ImageS
相关资源
- 用c++编写的一个学生信息管理系统,
- C++ httpclient类
- 数据结构大作业航空客运订票系统
- C++课程设计报告及源程序学生学籍管
- 用c++实现围棋双人玩
- 使用微软蓝牙API的
- 水果专家系统
- 和矩阵相关的头文件matrix.h
- c++运行程序缺少mex.h
- C++面向对象程序设计教程(第3版)—
- MFC_unicode相关链接库
- 文件查重工具c++实现,
- 椭圆曲线加密算法实现
- _miaoking博文——企业人力资源管理系
- 《C++面向对象程序设计》第2版编程题
- C++数据结构等价类实现
- 磁盘调度算法模拟软件,完整课程设
- Ogre嵌入MFC_DEMO
- 生产者消费者问题C++语言
- VS.net / VC++ 2003 2005(.sln)项目转化为
- C++ 访问DOM中文文档IHTML
- Gabor滤波器C++程序
- c++usb端口访问
- 课程设计学生宿舍管理系统C++
- C++控制Windows桌面切换
- C语言windowlinux平台的SNTP实现
- 在MFC应用程序中浏览PDF、Word文档文件
- vc++实现图像处理:中值滤波
- OS_页面置换算法实验c++程序代码
- MRF2图像分割vc++代码
评论
共有 条评论