2013-10-16 10 views
5

Ich benutze SURF-Algorithmus, um zwei Bilder mit OpenCV übereinstimmen. Und ich habe die keypioints.Wie zeichne Kreise mit zufälligen Farben in OpenCV

Jetzt möchte ich diese Schlüsselpunkte mit zufälligen Farben Kreise zeichnen.

Ich weiß, wie man einen Kreis in OpenCV mit der Funktion cvCircle zeichnet, aber die Farbe wird mit cvScalar(r,g,b) festgelegt.

Ich möchte die Farbe des Kreises eines Keypoint in einem Bild ist anders als die Kreise in der Nähe.

Die Bibliotheksfunktion in OpenCV habe den gewünschten Effekt. Aber ich weiß nicht, wie ich es realisieren soll.

Wer kann mir sagen, wie man die Kreise zeichnet.

Danke!

Antwort

5

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

mit dieser Methode sollte es posible, Ihre Spiele zu zeichnen.

14

Angenommen, Sie möchten Kreise in verschiedenen Farben auf Mat image zeichnen. Hier ist eine Möglichkeit, zufällige Farben zu erzeugen:

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

Das ist großartig. Ich würde vorschlagen, HSL- oder HSV-Farbraum zu verwenden, um eine Farbe mit Sättigung und/oder Intensität bei max zu erzeugen und dann nur den Farbton und/oder den Wert zu ändern, und dann zurück zu RGB zu konvertieren. Es wird Sie mit weniger Grautönen verlassen. –

Verwandte Themen