資源簡介
opencv實現兩種手勢識別,拳頭和手掌,效果還是可以的

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
cv::Mat?img;
std::vector?palm;
std::vector?Fists;
cv::CascadeClassifier?Fist?Palm;
void?DrawText(cv::Mat&?imgstd::string?textint?x?int?ycv::Scalar?color)
{
????cv::putText(imgtext.c_str()cv::Point(xy)cv::FONT_HERSHEY_SIMPLEX0.8color21);
}
int?main()
{
????cv::VideoCapture?cap(0);
????char?ch;
????Fist.load(“fist.xml“);
????Palm.load(“rpalm.xml“);
????double?time_past=0;
????int?frame_cnt?=?0;
????int?T=5;
????double?avg_fps=0;
????int64?s;
????double?time_palm=0?time_fist=0;
????while(true)
????{
????????int64?start?=?cv::getTickCount();
????????cap>>img;
????????s?=?cv::getTickCount();
????????Palm.detectMultiScale(imgpalm1.120|CV_HAAR_SCALE_IMAGEcv::Size(100100));
????????time_palm?+=?(cv::getTickCount()?-?s)?/?cv::getTickFrequency();
????????s?=?cv::getTickCount();
????????Fist.detectMultiScale(imgFists1.120|CV_HAAR_SCALE_IMAGEcv::Size(100100));
????????time_fist?+=?(cv::getTickCount()?-?s)?/?cv::getTickFrequency();
????????for(unsigned?int i=0?j=0;?i????????{
????????????if(Fists.size())
????????????{
????????????????cv::putText(img“Fist“cv::Point(Fists[i].xFists[i].y)cv::FONT_HERSHEY_SIMPLEX0.8cv::Scalar(00255)21);
????????????????cv::rectangle(imgcv::Point(Fists[i].xFists[i].y)cv::Point(Fists[i].x+?Fists[i].widthFists[i].y+?Fists[i].height)cv::Scalar(0255255)180);
????????????}
????????????if(palm.size())
????????????{
????????????????cv::putText(img“Palm“cv::Point(palm[i].xpalm[i].y)cv::FONT_HERSHEY_SIMPLEX0.8cv::Scalar(00255)21);
????????????????cv::rectangle(imgcv::Point(palm[i].xpalm[i].y)cv::Point(palm[i].x+?palm[i].widthpalm[i].y+?palm[i].height)cv::Scalar(0255255)180);
????????????}
????????}
????????frame_cnt++;
????????time_past?+=?(cv::getTickCount()?-?start)?/?cv::getTickFrequency();
????????if(time_past?>=?T)
????????{
????????????avg_fps?=?(double)frame_cnt?/?time_past;
????????????printf(“average?fps:%3.2f?time_palm:%f?ms?time_fist:%f?ms?in?%d?second\n“?avg_fps?time_palm/frame_cnt*1000?time_fist/frame_cnt*1000?T);
????????????frame_cnt?=?0;
????????????time_past?=?0;
????????????time_palm?=?0;
????????????time_fist?=?0;
????????}
????????char?fps_str[256]?;
????????sprintf(fps_str“%s?%d““FPS?:?“(int)avg_fps);
????????DrawText(imgfps_str1050cv::Scalar(02550));
????????cv::imshow(“Gesture?Recognition“img);
????????ch=cv::waitKey(1);
????????if(ch==27)
????????{
????????????break;
????????}
????}
????return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......??????2688??2017-11-07?06:07??CVGesture-master\CVGesture-master\demo.cpp
?????文件?????121195??2017-11-07?06:07??CVGesture-master\CVGesture-master\fist.xm
????.......???????839??2017-11-07?06:07??CVGesture-master\CVGesture-master\installation.md
?????文件????????295??2017-11-07?06:07??CVGesture-master\CVGesture-master\Makefile
?????文件?????583960??2017-11-07?06:07??CVGesture-master\CVGesture-master\performance_report_cvgesture.pdf
????.......??????1101??2017-11-07?06:07??CVGesture-master\CVGesture-master\README.md
?????文件?????179290??2017-11-07?06:07??CVGesture-master\CVGesture-master\rpalm.xm
?????文件??????28200??2017-11-15?18:57??CVGesture-master\說明.JPG
?????目錄??????????0??2017-11-07?06:07??CVGesture-master\CVGesture-master
?????目錄??????????0??2017-11-15?18:57??CVGesture-master
-----------?---------??----------?-----??----
???????????????917568????????????????????10
評論
共有 條評論