由于最近做一些手势识别方面的项目,所以在网上找了很多这方面的材料;
发现用adaboost+haar可以检测好几种手势;相对于用肤色来检测手,级联分类器的方法效果相当的好,而且检测速度也很快。
#include "opencv2\opencv.hpp"
using namespace cv;
void detectAndShow(CascadeClassifier& casFist,Mat img)
{
vector<Rect> fist;
Mat gray;
cvtColor(img,gray,CV_BGR2GRAY);
casFist.detectMultiScale(gray,fist,1.1,2,0,Size(50,50));
for(int i=0;i<fist.size();++i)
{
rectangle(img,fist[i],Scalar(255,255,0),1);
}
imshow("fist",img);
}
int main()
{
string filename="fist.xml";
CascadeClassifier casFist;
if(!casFist.load(filename))
{
std::cout<<" load xml file failed\n";
system("pause");
return -1;
}
VideoCapture cap(0);
Mat frame;
while( 27!=waitKey(10))
{
cap>>frame;
detectAndShow(casFist,frame);
}
return 0;
}
分类器文件有需要可邮件索要594798101@qq.com
http://www.andol.info/download