資源簡介
基于膚色的人臉檢測技術(shù),opencv的調(diào)用。本科畢設(shè)
代碼片段和文件信息
/**************************************************
?*基于膚色的人臉檢測
?*??????
?**************************************************/
#include?
#include?
#include?
#include?
#define?MAXL??1000
void?histo(IplImage*?pSrcImageIplImage*?pDstImage);
int?main(?int?argc?char**?argv?)
{?
int?RGBi;
int?count?=?0?areamax[2]?=?{0}cut[2]?=?{0};
CvRect?rect[2];
CvRect?s_rect[MAXL];
??
????//聲明IplImage指針
IplImage*?frame?=?NULL;
/*??IplImage*?pframe?=?NULL;?
????IplImage*?img_8uc1?=?NULL;
IplImage*?cannyImage?=?NULL;
*/
????CvCapture*?pCapture?=?NULL;
??
????int?nFrmNum?=?0;
????//創(chuàng)建窗口
????cvNamedWindow(“video“?1);
cvNamedWindow(“gray“);
????
????//使窗口有序排列
????cvMoveWindow(“video“?30?0);
cvMoveWindow(“gray“8000);
????
????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;
???????}
cvQueryframe(pCapture);
double?fps?=?15;
CvSize?size?=?cvSize(
(int)cvGetCaptureProperty(?pCapture?CV_CAP_PROP_frame_WIDTH)
(int)cvGetCaptureProperty(?pCapture?CV_CAP_PROP_frame_HEIGHT)
);
CvVideoWriter*?writer?=?cvCreateVideoWriter(??
“out.avi“???????????????????????????????
CV_FOURCC(‘X‘?‘V‘?‘I‘?‘D‘)?? fps
size
);
??
????//逐幀讀取視頻
????while(frame?=?cvQueryframe(?pCapture?))
????{
????????//聲明IplImage指針
IplImage*?pframe?=?NULL;?
????????IplImage*?img_8uc1?=?NULL;
????IplImage*?cannyImage?=?NULL;
IplImage*?gray?=?NULL;
????????IplImage*?s_gray?=?NULL;
pframe?=?cvCloneImage(frame);
????????nFrmNum++;
??????
????????img_8uc1?=?cvCreateImage(cvSize(frame->width?frame->height)??IPL_DEPTH_8U1);
cannyImage?=?cvCreateImage(cvSize(frame->width?frame->height)??IPL_DEPTH_8U1);
gray?=?cvCreateImage(cvSize(frame->width?frame->height)??IPL_DEPTH_8U1);
s_gray?=?cvCreateImage(cvSize(frame->width?frame->height)??IPL_DEPTH_8U1);
????
pframe->origin?=?frame->origin;
img_8uc1->origin?=?frame->origin;
cannyImage->origin?=?frame->origin;
gray->origin?=?frame->origin;
s_gray->origin?=?frame->origin;
??
??????????//直方圖均衡化?可以光照補(bǔ)償
??histo(pframepframe);
??????????
??//進(jìn)行膚色點的檢測
??????for(int?y?=?0;?y?ame->height;?y++)
??{
??uchar*?ptr?=?(uchar*)(pframe->imageData?+?y*?pframe->widthStep??);
??for(int?x?=?0;?x?ame->width;?x++)
??{
B?=?ptr[3*x];
G?=?ptr[3*x?+?1];
R?=?ptr[3*x?+?2];
if(R>95?&&?G>40?&&?B>20?&&?R>G?&&?R>B?&&?max(Rmax(GB))-min(Rmin(GB))>15?&&?abs(R-B)>15)????????//?均勻日光下?膚色判斷
{
????????????????????ptr[3*x]?=?255;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8851??2011-05-06?13:05??輪廓檢測眼睛\Cpp2.cpp
?????文件???????3462??2011-04-18?15:19??輪廓檢測眼睛\Cpp2.dsp
?????文件????????533??2011-04-18?15:19??輪廓檢測眼睛\Cpp2.dsw
?????文件??????41984??2011-05-08?16:57??輪廓檢測眼睛\Cpp2.ncb
?????文件??????48640??2011-05-08?16:57??輪廓檢測眼睛\Cpp2.opt
?????文件????????242??2011-05-08?16:55??輪廓檢測眼睛\Cpp2.plg
?????文件?????196677??2011-05-06?13:05??輪廓檢測眼睛\Debug\Cpp2.exe
?????文件?????312560??2011-05-06?13:05??輪廓檢測眼睛\Debug\Cpp2.ilk
?????文件??????26558??2011-05-06?13:05??輪廓檢測眼睛\Debug\Cpp2.obj
?????文件????4110284??2011-04-18?15:17??輪廓檢測眼睛\Debug\Cpp2.pch
?????文件?????476160??2011-05-06?13:05??輪廓檢測眼睛\Debug\Cpp2.pdb
?????文件?????148480??2011-05-08?16:55??輪廓檢測眼睛\Debug\vc60.idb
?????文件?????102400??2011-05-06?13:05??輪廓檢測眼睛\Debug\vc60.pdb
?????目錄??????????0??2011-05-06?13:05??輪廓檢測眼睛\Debug
?????目錄??????????0??2011-05-08?16:57??輪廓檢測眼睛
-----------?---------??----------?-----??----
??????????????5476831????????????????????15
- 上一篇:libxl-3.1.zip
- 下一篇:51單片機(jī)的一些課程設(shè)計項目
評論
共有 條評論