Используя opencv + Виола Джонс работает медленно

Я пытаюсь реализовать определение альта-Джонса по определению лиц с помощью каскада opencv. Это код, который я использую:

int main( ){
SYSTEMTIME tm;

GetLocalTime(&tm);
printf("Date: %02d.%02d.%d, %02d:%02d:%02d:%02d\n", tm.wDay, tm.wMonth, tm.wYear, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);
//CString t = CTime::GetCurrentTime().Format("%H:%M:%S:%MS");
Mat image;
Mat frame_gray;

image = imread("test.jpg", CV_LOAD_IMAGE_COLOR);
namedWindow( "window1", 1 );   imshow( "window1", image );// Load Face cascade (.xml file)
CascadeClassifier face_cascade;
face_cascade.load( "cascades.xml" );cvtColor( image, frame_gray, CV_BGR2GRAY );
equalizeHist( frame_gray, frame_gray );GetLocalTime(&tm);
printf("Date: %02d.%02d.%d, %02d:%02d:%02d:%02d\n", tm.wDay, tm.wMonth, tm.wYear, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);
float pyramidScale = 1.5f;
// Detect faces
std::vector<Rect> faces;
face_cascade.detectMultiScale( frame_gray, faces, pyramidScale, 3, 0, Size(20, 20), Size(50, 50));

GetLocalTime(&tm);
printf("Date: %02d.%02d.%d, %02d:%02d:%02d:%02d\n", tm.wDay, tm.wMonth, tm.wYear, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);

// Draw circles on the detected faces
for( int i = 0; i < faces.size(); i++ )
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
ellipse( image, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 255, 255 ), 4, 8, 0 );
}

imshow( "Detected Face", image );SYSTEMTIME tm1;
GetLocalTime(&tm);
printf("Date: %02d.%02d.%d, %02d:%02d:%02d:%02d\n", tm.wDay, tm.wMonth, tm.wYear, tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);
//cout<< "Time : "<<tm.wHour<<":"<<tm.wMinute << ":"<< tm.wSecond << ":" << tm.wMilliseconds << "\n";
waitKey(0);
return 0;
}

Проблема в том, что это говорит о том, что это реализация альта-Джонса в opencv, и для ее запуска обычно требуется 30 кадров в секунду (со стороны автора), но требуется 6 секунд, чтобы запустить нормальное изображение HD для обнаружения лица размером около 1920×1080. Я хотел спросить, правильна ли реализация или есть какие-то проблемы с тем, как я реализую метод, и есть ли способ, которым я могу сделать это быстрее? Cascade.xml — это файл, который я обучил, используя образцы изображений. Спасибо.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]