2012-04-27 17 views
25

मैं एक सीवी :: मैट को ग्रे पैमाने पर कैसे परिवर्तित कर सकता हूं?मैं ओवीसीवी में एक ग्रे स्केल में एक सीवी :: मैट कैसे परिवर्तित कर सकता हूं?

मैं हालांकि मैं एक अभिकथन त्रुटि दायर हो रही किया गया है, opencv से drawKeyPoints समारोह को चलाने के लिए कोशिश कर रहा हूँ। मेरा अनुमान है कि पैरामीटर में रंगीन छवि की बजाय इसे एक ग्रे स्केल छवि प्राप्त करने की आवश्यकता है।

void SurfDetector(cv::Mat img){ 
vector<cv::KeyPoint> keypoints; 
cv::Mat featureImage; 

cv::drawKeypoints(img, keypoints, featureImage, cv::Scalar(255,255,255) ,cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS); 

cv::namedWindow("Picture"); 
cv::imshow("Picture", featureImage); 

}

उत्तर

50

सी ++ एपीआई का उपयोग करना, समारोह नाम से थोड़ा बदल गया है और अब यह लिखते हैं:

#include <opencv2/imgproc/imgproc.hpp> 

cv::Mat greyMat, colorMat; 
cv::cvtColor(colorMat, greyMat, CV_BGR2GRAY); 

मुख्य कठिनाइयों हैं कि समारोह imgproc मॉड्यूल में है (कोर में नहीं), और डिफ़ॉल्ट सीवी :: मैट अधिक सामान्य आरजीबी के बजाय ब्लू ग्रीन रेड (बीजीआर) ऑर्डर में हैं।

OpenCV 3

OpenCV 3.0 के साथ शुरू, वहाँ अभी तक एक और सम्मेलन है। रूपांतरण कोड नामस्थान cv:: में एम्बेड किए गए हैं और COLOR के साथ पूर्वनिर्धारित हैं। तो, उदाहरण के तो हो जाता है:

#include <opencv2/imgproc/imgproc.hpp> 

cv::Mat greyMat, colorMat; 
cv::cvtColor(colorMat, greyMat, cv::COLOR_BGR2GRAY); 

जहां तक ​​मैंने देखा है, शामिल फ़ाइल पथ नहीं बदला है (यह एक टाइपो नहीं है)।

+1

OpenCV 3 के तहत, रूपांतरण प्रकार निरंतर –

+0

धन्यवाद COLOR_BGR2GRAY को बदल दिया गया है, मैं इस सवाल का जवाब अपडेट करेंगे। ओपनसीवी 3 जल्द ही बाहर निकल रहा है, यह उपयोगी होगा। – sansuiso

संबंधित मुद्दे