資源簡介
基于C++的三幀差法,經(jīng)過驗證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;//定義調(diào)用次數(shù)計數(shù)器??
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;//得到前一幀差分圖的數(shù)據(jù)??
??
????int?heightwidthstep;//定義圖像的高,寬,步長??
????int?SumInRect?=?0;//指定矩形內(nèi)圖像數(shù)據(jù)之和??
????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);//構建掩模內(nèi)核??
????KY?=?cvMat(33CV_8SKy);//構建掩模內(nèi)核??
??
????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進行內(nèi)存申請??
????????BackGroundImage?=?cvCreateImage(ImageSizeIPL_DEPTH_8U1);??
????????DiffImage_1?=?cvCreateImage(ImageS
評論
共有 條評論