OpenCV

2013-10-16 9 views
5

में यादृच्छिक रंगों के साथ मंडलियों को कैसे आकर्षित करें I OpenCV के साथ दो छवियों से मेल खाने के लिए SURF एल्गोरिदम का उपयोग कर रहा हूं। और मुझे कीपॉइंट्स मिल गए हैं।OpenCV

अब मैं यादृच्छिक रंग मंडलियों के साथ इन कीपॉइंट्स को आकर्षित करना चाहता हूं।

मुझे पता है कि समारोह cvCircle के साथ ओपनसीवी में एक सर्कल कैसे आकर्षित करें, लेकिन रंग cvScalar(r,g,b) के साथ तय किया गया है।

मैं चाहता हूं कि एक छवि में एक कीपॉइंट के सर्कल का रंग इसके आस-पास की मंडलियों के लिए अलग हो।

ओपनसीवी में लाइब्रेरी फ़ंक्शन cv::drawMatches() का प्रभाव मुझे चाहिए। लेकिन मुझे नहीं पता कि इसे कैसे महसूस किया जाए।

क्या कोई भी जो मुझे बता सकता है कि मंडलियों को कैसे आकर्षित किया जाए।

धन्यवाद!

उत्तर

5

cv::drawKeypoints(matOriginal, keyPoints, matOriginal);

इस विधि के साथ

यह आपके मैचों आकर्षित करने के लिए posible होना चाहिए।

14

मान लीजिए कि आप Mat image पर विभिन्न रंगों में मंडलियों को आकर्षित करना चाहते हैं। यहां यादृच्छिक रंग उत्पन्न करने का एक तरीका है:

RNG rng(12345); 
Mat image = Mat::zeros(500, 500, CV_8UC3);  // change to the size of your image 
for (int i = 0; i < circleNum; i++) { 
    Scalar color = Scalar(rng.uniform(0,255), rng.uniform(0, 255), rng.uniform(0, 255)); 
    circle(image, center[i], radius[i], color, -1, 8, 0); 
} 
+1

यह बहुत अच्छा है। मैं अधिकतम पर संतृप्ति और/या तीव्रता के साथ रंग उत्पन्न करने के लिए एचएसएल या एचएसवी कलर स्पेस का उपयोग करने का सुझाव दूंगा और फिर केवल रंग और/या मान बदल रहा हूं, फिर आरजीबी में वापस परिवर्तित करूँगा। यह आपको कम ग्रे के साथ छोड़ देगा। –