मैं ओपनसीवी में वाहनों का पता लगाने के लिए MIT cars dataset से प्रशिक्षित एक हायर कैस्केड क्लासिफायर का उपयोग कर रहा हूं (ओपनसीवी के साथ प्रदान की गई यूटिलिटीज का उपयोग करके प्रशिक्षित)। यह डीबग मोड में संकलित होने पर उचित रूप से अच्छी तरह से काम करता है, लेकिन जब रिलीज मोड में संकलित किया जाता है तो कैस्केड कोई भी विचलन नहीं करता है। नीचे दी गई टेस्ट छवि पर निम्न कोड चलाना डीबग मोड में एक पहचान देता है लेकिन रिलीज मोड में कुछ नहीं (यह व्यवहार मेरे डेटा अनुक्रम में सभी छवियों के माध्यम से जारी रहता है)।रिलीज/डीबग मोड में जब हायर कैस्केड के साथ अलग-अलग परिणाम
क्या आप सुझाव दे सकते हैं कि ऐसा क्यों होता है और, सबसे महत्वपूर्ण बात यह है कि रिलीज मोड में चलते समय डिस्कनेक्शन प्राप्त करने के लिए मैं क्या कर सकता हूं?:
कोड
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);
TestImage
छवि और कैस्केड फ़ाइलें ठीक से लोड होती हैं, मेरे वास्तविक कोड में मैं पूर्ण निर्देशिका पथ का उपयोग करता हूं। जहां तक मैं कह सकता हूं, किसी भी मोड में कोई त्रुटि नहीं है, केवल अंतर अंतर वस्तुओं की संख्या होने के कारण MultiScale रिटर्न। – Chris
ठीक है:/मैंने अपनी पहली टिप्पणी हटा दी है क्योंकि पीएनजी के बारे में हिस्सा प्रासंगिक नहीं था। –
यह अक्सर यूबी रखने और विशिष्ट व्यवहार (या तो आपके कोड या लाइब्रेरी में) पर भरोसा करने या विशेष रूप से जेनरेट किए गए कोड पर भरोसा करने का संकेत है (उदा। रिलीज मोड में रजिस्टरों में रहने वाली सामग्री के कारण फ़्लोटिंग पॉइंट सटीकता)।सबसे अच्छी बात यह है कि आप यहां शामिल कर सकते हैं सभी शामिल कंप्यूटेशंस की तुलना दोनों चरणों में चरणबद्ध तरीके से करें और पता लगाएं कि वे – PlasmaHH