我正在使用从MIT汽车数据集训练的Haar级联分类器来检测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() << …Run Code Online (Sandbox Code Playgroud) 我可以成功构建并执行以下代码:
IplImage* img = cvLoadImage("C:\\hello.jpg");
cvNamedWindow("myfirstwindow");
cvShowImage("myfirstwindow", img);
Run Code Online (Sandbox Code Playgroud)
但是在执行下面的代码时我得到了未处理的异常:
cv::Mat image= cv::imread("boldt.jpg");
cv::namedWindow("Image");
cv::imshow("Image",image);
Run Code Online (Sandbox Code Playgroud)
虽然,我可以成功构建代码.
我在Windows 7 x86版本上使用opencv2.2和VS2010 x86版本.请帮忙 !
更新:我在winxp上尝试过,它工作正常......只有在发布模式下win7才能正常工作.