Всем доброго времени суток! Решил заняться распознаванием жестов, обучил классификатор с помощью traicascade, опробовал его работу в простой программе,где ищет жест на картинке. Ввиду того,что выборка не очень большая, точность распознавания примерно процентов 50. Вот теперь главный вопрос, у меня будет много жестов, штук 5-7, и я хочу,чтобы программа могла подписать,какой жест она "увидела". Как это всё завязать? До меня пока как-то не доходит...
Пример программы прикрепляю.
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main()
{
Mat image;
image = imread("hand_gesture.jpg", CV_LOAD_IMAGE_COLOR);
namedWindow("window1", 1); imshow("window1", image);
// Load hand cascade (.xml file)
CascadeClassifier hand_cascade;
hand_cascade.load("C:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalcathand.xml");
// Detect hands
std::vector<Rect> hands;
hand_cascade.detectMultiScale(image, hands, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
// Draw circles on the detected hands
for (int i = 0; i < hands.size(); i++)
{
Point center(hands[i].x + hands[i].width*0.5, hands[i].y + hands[i].height*0.5);
ellipse(image, center, Size(hands[i].width*0.5, hands[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);
}
imshow("Detected hand", image);
waitKey(0);
return 0;
}