资源简介
对摄像头获取的图片进行相应的图像处理,识别出人体
代码片段和文件信息
#include “highgui.h“
#include “stdio.h“
#include “cxcore.h“
#include “cv.h“
#define IMAGE_WIDTH 384
#define IMAGE_HEIGHT 288
void main()
{
CvSize ImgSize;
ImgSize.width=IMAGE_WIDTH;
ImgSize.height=IMAGE_HEIGHT;
IplImage* img=cvLoadImage(“test.jpg“);
IplImage* imgbackground=cvLoadImage(“background.jpg“);
IplImage* dst=cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( dst );
IplImage* background = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( background );
IplImage* imgbefore = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( imgbefore );
IplImage* dst2 = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( dst2 );
// IplImage* dst3 = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
// cvZero( dst3 );
// IplImage* dst4 = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
// cvZero( dst4 );
IplImage* YCrCb = cvCreateImage( ImgSize IPL_DEPTH_8U 3 );
cvZero( YCrCb );
IplImage* YCrCb_BG = cvCreateImage( ImgSize IPL_DEPTH_8U 3 );
cvZero( YCrCb_BG );
IplImage* YCrCb_D = cvCreateImage( ImgSize IPL_DEPTH_8U 3 );
cvZero( YCrCb_D );
IplImage* Y = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( Y );
IplImage* Cr = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( Cr );
IplImage* Cb = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( Cb );
IplImage* CrCb = cvCreateImage( ImgSize IPL_DEPTH_8U 1 );
cvZero( CrCb );
IplImage* pyr = cvCreateImage( cvSize((IMAGE_WIDTH & -2)/2 (IMAGE_HEIGHT & -2)/2) 8 1 );
// CvMemStorage *stor1;
// CvSeq *cont1;
// CvMemStorage *stor2;
// CvSeq *cont2;
CvMemStorage *stor3;
CvSeq *cont3;
CvRect r;
r.height=r.width=0;
cvNamedWindow(“Video“ 1);
cvCvtColor( img imgbefore CV_BGR2GRAY );
cvCvtColor( img YCrCb CV_BGR2YCrCb );
cvCvtColor( imgbackground background CV_BGR2GRAY );
cvCvtColor( imgbackground YCrCb_BG CV_BGR2YCrCb );
cvSubRS(imgbackgroundcvScalar(2552552550)imgbackgroundNULL);
cvAbsDiff( YCrCb YCrCb_BG YCrCb_D );
cvSplit( YCrCb_D Y Cr Cb 0 );
cvThreshold( Y Y 80 255 CV_THRESH_BINARY );
cvThreshold( Cr Cr 5 255 CV_THRESH_BINARY );
cvThreshold( Cb Cb 6 255 CV_THRESH_BINARY );
cvSmooth( Cr Cr CV_MEDIAN 3 0 0 0 );
cvSmooth( Cb Cb CV_MEDIAN 3 0 0 0 );
cvOr(CrCbCrCbNULL);
cvOr(CrCbYCrCbNULL);
// 做帧差
cvAbsDiff( imgbefore background dst2 );
// 对差图像做二值化
cvThreshold( dst2 dst215 255 CV_THRESH_BINARY ); // and threshold it
// 中值滤波,消除小的噪声
cvSmooth( dst2 dst2 CV_MEDIAN 3 0 0 0 );
// 向下采样,去掉噪声
cvPyrDown( dst2 pyr 7 );
cvDilate( pyr pyr 0 1); // 做膨胀操作,消除目标的不连续空洞
cvErode( pyr pyr 0 1);
cvPyrUp( pyr dst2 7 );
cvThreshold( dst2 dst210 255 CV_THRESH_BINARY );
cvAnd(CrCbdst2dstNULL);
// 下面的程序段用来找到轮廓
//
// Create dynamic structure and sequence.
// stor1 = cvCreateMemStorage(0);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 29217 2012-07-05 16:34 图像test\background.JPG
文件 18612 2012-07-11 09:25 图像test\Debug\test.obj
文件 164864 2012-07-11 12:39 图像test\Debug\vc60.idb
文件 94208 2012-07-11 09:25 图像test\Debug\vc60.pdb
文件 188468 2012-07-11 09:25 图像test\Debug\图像test.exe
文件 213704 2012-07-11 09:25 图像test\Debug\图像test.ilk
文件 4114852 2012-07-07 09:26 图像test\Debug\图像test.pch
文件 467968 2012-07-11 09:25 图像test\Debug\图像test.pdb
文件 4989 2012-07-11 09:25 图像test\test.cpp
文件 29400 2012-07-05 16:35 图像test\test.JPG
文件 4389 2012-07-06 21:23 图像test\图像test.dsp
文件 524 2012-07-06 18:21 图像test\图像test.dsw
文件 50176 2012-07-11 12:41 图像test\图像test.ncb
文件 48640 2012-07-11 12:41 图像test\图像test.opt
文件 1324 2012-07-11 09:25 图像test\图像test.plg
目录 0 2012-07-11 12:48 图像test\Debug
目录 0 2012-07-11 12:48 图像test
----------- --------- ---------- ----- ----
5431335 17
- 上一篇:中医术语查询系统
- 下一篇:计算机专业顶岗实习报告
评论
共有 条评论