Я использую каскадный классификатор Хаара, обученный на основе набора данных автомобилей MIT для обнаружения транспортных средств. в OpenCV (обучался с помощью утилит, поставляемых с OpenCV). Это работает достаточно хорошо при компиляции в режиме отладки, но при компиляции в режиме выпуска каскад вообще не выполняет никаких обнаружений. Выполнение следующего кода на тестовом изображении ниже дает обнаружение в режиме отладки, но ничего в режиме выпуска (это поведение сохраняется для всех изображений в моей последовательности данных).
Можете ли вы предположить, почему это происходит и, что более важно, что я могу сделать, чтобы получить обнаружение при работе в режиме выпуска?
Код
cv::Mat testImage = cv::imread("testImage.png",0);
cv::equalizeHist(testImage, testImage);
cv::CascadeClassifier vehicleCascade;
vehicleCascade.load("cars3.xml");
// Detect vehicles
std::vector<cv::Rect> cars;
vehicleCascade.detectMultiScale(
testImage, // Input image
cars, // Output bounding boxes
1.1, // scale factor - how much image size is reduced at each scale
5, // min neighbours - how many neighbours required to maintain rect
0|CV_HAAR_SCALE_IMAGE, // Not used
cv::Size(30,30), // Min poss object size
cv::Size() // Max poss object size
);
std::cout << "Found " << cars.size() << " objects.\n";
for (int i=0; i<cars.size(); ++i)
cv::rectangle(testImage, cars.at(i), CV_RGB(255,0,0), 3);
cv::namedWindow("Haar cascade");
cv::imshow("Haar cascade", testImage);
cv::waitKey(0);
cv::imwrite("output.png", testImage);
Тестовое изображение