opencv手势识别Word文档下载推荐.docx

上传人:b****3 文档编号:16742689 上传时间:2022-11-25 格式:DOCX 页数:11 大小:17.72KB
下载 相关 举报
opencv手势识别Word文档下载推荐.docx_第1页
第1页 / 共11页
opencv手势识别Word文档下载推荐.docx_第2页
第2页 / 共11页
opencv手势识别Word文档下载推荐.docx_第3页
第3页 / 共11页
opencv手势识别Word文档下载推荐.docx_第4页
第4页 / 共11页
opencv手势识别Word文档下载推荐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

opencv手势识别Word文档下载推荐.docx

《opencv手势识别Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《opencv手势识别Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。

opencv手势识别Word文档下载推荐.docx

staticCvCapture*capture=0;

staticintisHandOpen=1;

staticCvScalarcolor;

staticIplImage*img;

staticIplImage*tmpImg;

staticIplImage*conv;

staticIplImage*H;

staticIplImage*S;

staticIplImage*V;

staticIplImage*tmpH1;

staticIplImage*tmpS1;

staticIplImage*tmpH2;

staticIplImage*tmpS2;

staticIplImage*tmpH3;

staticIplImage*tmpS3;

staticIplImage*openHandTmpl,*closedHandTmpl;

staticIplImage*openGrayHandTmpl,*closedGrayHandTmpl;

staticIplImage*openscaledTmpl,*closedscaledTmpl;

staticIplImage*openMatchResult,*closedMatchResult;

FILE*output;

voidhandDetect(IplImage*img);

staticintnumImg=10;

char*names[]={"

./images/test01.jpg"

"

./images/test02.jpg"

./images/test03.jpg"

./images/test04.jpg"

./images/test05.jpg"

"

../images/test06.jpg"

./images/test07.jpg"

./images/test08.jpg"

./images/test09.jpg"

./images/test10.jpg"

};

char*resultsiamge[]={"

result01.jpg"

"

result02.jpg"

result03.jpg"

result04.jpg"

result05.jpg"

result06.jpg"

result07.jpg"

result08.jpg"

result09.jpg"

result10.jpg"

intmain(intargc,char**argv)

{

 

 

inti=0;

charfilename[80];

storage=cvCreateMemStorage(0);

#ifdefDEBUG

cvNamedWindow("

Template1"

1);

Template2"

CompResults1"

CompResults2"

SkinDetection"

openHandTmpl=cvLoadImage("

openHandTmpl.jpg"

1);

closedHandTmpl=cvLoadImage("

closedHandTmpl.jpg"

//ConvertformRGBtoGRAY

tmplSize.width=openHandTmpl->

width;

tmplSize.height=openHandTmpl->

height;

openGrayHandTmpl=cvCreateImage(tmplSize,IPL_DEPTH_8U,1);

cvCvtColor(openHandTmpl,openGrayHandTmpl,CV_BGR2GRAY);

tmplSize.width=closedHandTmpl->

tmplSize.height=closedHandTmpl->

closedGrayHandTmpl=cvCreateImage(tmplSize,IPL_DEPTH_8U,1);

cvCvtColor(closedHandTmpl,closedGrayHandTmpl,CV_BGR2GRAY);

cvNamedWindow("

source"

cvMoveWindow("

0,0);

Results"

400,300);

cvAddSearchPath("

\\images\\"

);

//OpentheOutputFile

output=fopen("

results.log"

w"

);

//Colorforcontourdrawing

color=CV_RGB(255,255,255);

if(argc==1||(argc==2&

&

strlen(argv[1])==1&

isdigit(argv[1][0])))

capture=cvCaptureFromCAM(argc==2?

argv[1][0]-'

0'

:

0);

}

elseif(argc==2)

capture=cvCaptureFromAVI(argv[1]);

if(capture!

=0)

for(;

;

IplImage*frame;

//,*frame_copy;

if(!

cvGrabFrame(capture))

break;

frame=cvRetrieveFrame(capture);

frame)

imgSize.width=frame->

imgSize.height=frame->

// 

frame_copy=cvCloneImage(frame);

handDetect(frame);

if(cvWaitKey(10)>

=0)

cvReleaseCapture(&

capture);

else

for(i=0;

i<

numImg;

i++)

fprintf(output,"

Image%i%s************************\n"

i+1,names);

strcpy(filename,"

result_"

cvNamedWindow(names,1);

img=cvLoadImage(names,1);

cvShowImage("

img);

cvWaitKey(0);

if(img)

imgSize.width=img->

imgSize.height=img->

handDetect(img);

strcat(filename,names);

cvSaveImage(resultsiamge,img);

cvReleaseImage(&

img);

cvDestroyWindow(names);

tmpImg);

conv);

H);

S);

V);

tmpH1);

tmpH2);

tmpH3);

tmpS1);

tmpS2);

tmpS3);

openHandTmpl);

closedHandTmpl);

openGrayHandTmpl);

closedGrayHandTmpl);

openscaledTmpl);

closedscaledTmpl);

openMatchResult);

closedMatchResult);

cvReleaseMemStorage(&

storage);

fclose(output);

cvDestroyWindow("

Result"

return0;

voidhandDetect(IplImage*img)

//CvSizetmplSize;

CvSizeresultSize;

IplConvKernel*erosionElement,*dilationElement;

doublecontArea,imgArea,maxRatio=0.0;

CvRectbndRect=cvRect(0,0,0,0);

CvPointpt1,pt2;

floatscaleFactor;

CvScalaraverageValue;

intstartCount=0;

intopenCount=0;

intclosedCount=0;

floatopenCompRatio=0.0;

floatclosedCompRatio=0.0;

floatbestRatio=0.0;

imgArea=imgSize.width*imgSize.height;

OpenTemplatefiles

//Generateprocessingimages

tmpImg=cvCloneImage(img);

conv=cvCreateImage(imgSize,IPL_DEPTH_8U,3);

tmpH1=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

tmpS1=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

tmpH2=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

tmpS2=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

tmpH3=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

tmpS3=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

H=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

S=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

V=cvCreateImage(imgSize,IPL_DEPTH_8U,1);

//Fliptheimageifincapturemode

if(capture)

cvFlip(conv,conv,0);

//ImageSmoothing

//cvSmooth(img,tmpImg,CV_BLUR,3,3);

cvSmooth(img,img,CV_GAUSSIAN,3,3);

//ConverttoHSV

cvCvtColor(tmpImg,conv,CV_BGR2HSV);

//SplittoHSVplanes

cvCvtPixToPlane(conv,H,S,V,0);

//AverageIllumination

averageValue=cvAvg(V,0);

IlluminationLevel=%f\n"

averageValue.val[0]);

//DetectskintoneHuesandSaturations

//NOTE:

Huevaluesneedtobedoubledforactual

//RedtoOrangeHuewithHighSaturation

//Hue0to28degreeandSat190to200

cvInRangeS(H,cvScalar(0.0,0.0,0,0),cvScalar(14.0,0.0,0,0),tmpH1);

cvInRangeS(S,cvScalar(75.0,0.0,0,0),cvScalar(200.,0.0,0,0),tmpS1);

cvAnd(tmpH1,tmpS1,tmpH1,0);

//RedHuewithLowSaturation

//Hue0to26degreeandSat20to90

cvInRangeS(H,cvScalar(0.0,0.0,0,0),cvScalar(13.0,0.0,0,0),tmpH2);

cvInRangeS(S,cvScalar(20.0,0.0,0,0),cvScalar(90.0,0.0,0,0),tmpS2);

cvAnd(tmpH2,tmpS2,tmpH2,0);

//RedHuetoPinkwithLowSaturation

//Hue340to360degreeandSat15to90

cvInRangeS(H,cvScalar(170.0,0.0,0,0),cvScalar(180.0,0.0,0,0),tmpH3);

cvInRangeS(S,cvScalar(15.0,0.0,0,0),cvScalar(90.,0.0,0,0),tmpS3);

cvAnd(tmpH3,tmpS3,tmpH3,0);

//CombinetheHueandSatdetections

cvOr(tmpH3,tmpH2,tmpH2,0);

cvOr(tmpH1,tmpH2,tmpH1,0);

//DilationandErosion

//StructuringElementGeneration

dilationElement=cvCreateStructuringElementEx(5,5,3,3,CV_SHAPE_RECT,0);

erosionElement=cvCreateStructuringElementEx(5,5,3,3,CV_SHAPE_RECT,0);

//Dilationaddsalayeron,andreturnsthingstothecorrectsize.

cvDilate(tmpH1,tmpH2,dilationElement,1);

//Erosionpeelsalayerofpixelsoff,andmakessmallregionsdisappear

cvErode(tmpH1,tmpH3,erosionElement,1);

//Findthecontoursofall

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1