Каскадный классификатор вызывает задержку

Я обучил каскадный классификатор с несколькими изображениями. У меня было 55 изображений, которые я снял с веб-камеры, обрезал и изменил размер (64×128).

С помощью

для меня в {1..55}; do ./createsamples -img ../cascade_data/$i.jpg -num
11 -bg bg.dat -vec vec_data / $ i.vec -maxxangle 0.6 -maxyangle 0
-maxzangle 0.3 -maxidev 100 -bgcolor 0 -bgthresh 0 -w 64 -h 128; сделано

Я создал 15 образцов из каждого изображения, что означает 15 * 55 = 825 образцов

У меня было 311 негативных образцов (1280 * 720), снятых с веб-камеры.

Я обучил каскадный классификатор с помощью opencv_traincascade исполняемый как

./ opencv_traincascade -data cascade_trained / -vec
../data/merged_data.vec -bg ../data/bg.txt -numPos 800 -numNeg 311
-numStages 25 -numThreads 4 -stageType BOOST -featureType LBP -w 64 -h 128 -минHitRate 0,995 -maxFalseAlarmRate 0,25 -maxDepth 1 -maxWeakCount 100

я получил cascade.xml Я использую этот классификатор следующим образом:

 for (;;)
{

bool Is = cap.grab();
if (Is == false) {
cout << "Video Capture Fail" << endl;
break;
}
else {vector<Rect> body;// prepare 2 Mat container
Mat img;
Mat original;

// capture frame from video file
cap.retrieve(img, CV_CAP_OPENNI_BGR_IMAGE);
resize(img, img, Size(640, 480))
img.copyTo(original);
cvtColor(img, img, CV_BGR2GRAY);
equalizeHist(img,img);

// detect people, more remarks in performace section
start = clock();
detectorBody.detectMultiScale(img, body, 1.02, 2, 0 | 1, Size(40, 70), Size(80,300));
cout << "time taken to detect:  "<<(double)(clock()-start)*1000/CLOCKS_PER_SEC<<" ms"<<endl;// Draw results from detectorBody into original colored image
if (body.size() > 0) {
for (int gg = 0; gg < body.size(); gg++) {

rectangle(original, body[gg].tl(), body[gg].br(), Scalar(0,0,255), 2, 8, 0);

}
}
imshow("Camera 1", original); if( waitKey(33) >= 0 ) break;
}
}

Время, необходимое для обнаружения 45004.6 ms а видео шапка — это живая вебкамера. Это застревает. Если я загружаю другой классификатор, который я скачал, скажем human.xml Это прямая трансляция без каких-либо проблем. Как я могу это исправить?

проверьте весь код здесь: testcascade.cpp

2

Решение

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

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector