2013-10-16 12 views
5

Sto usando l'algoritmo SURF per abbinare due immagini con OpenCV. E ho i keypioints.Come disegnare cerchi con colori casuali in OpenCV

Ora voglio disegnare questi punti chiave con cerchi di colori casuali.

So come disegnare un cerchio in OpenCV con la funzione cvCircle, ma il colore è stato risolto con cvScalar(r,g,b).

Voglio che il colore del cerchio di un punto chiave in un'immagine è diverso da circoli vicini esso.

La funzione di libreria cv::drawMatches() in OpenCV hanno l'effetto che voglio. Ma non so come realizzarlo.

C'è qualcuno che può dirmi come disegnare i cerchi.

Grazie!

risposta

5

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

con questo metodo dovrebbe essere posible per disegnare le vostre partite.

14

Si supponga di voler disegnare cerchi in diversi colori su Mat image. Ecco un modo per generare colori casuali:

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

Questo è fantastico. Suggerirei di utilizzare lo spazio colore HSL o HSV per generare un colore con saturazione e/o intensità al massimo e quindi modificare solo la tonalità e/o il valore, quindi convertire nuovamente in RGB. Ti lascerà con meno grigi. –

Problemi correlati