2013-10-16 34 views
5

私はOpenCVで2つの画像を一致させるためにSURFアルゴリズムを使用しています。 私はキーピオントを持っています。OpenCVでランダムな色で円を描く方法

今私は、ランダムな色の丸印でこれらのキーポイントを描きたいです。

私は、関数cvCircleでOpenCVので円を描画する方法を知っているが、色がcvScalar(r,g,b)で固定されています。

私は、画像内のキーポイントの円の色はそれに近い円に異なって欲しいです。 OpenCVの中

ライブラリ関数cv::drawMatches()は、私が欲しい効果を持っています。しかし、私はそれを実現する方法を知らない。

はどのように円を描くように私に言うことができる誰を行います。

ありがとうございます!この方法で

答えて

5

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

あなたのマッチを描くのとりうるべきです。

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

これは素晴らしいです。私は、HSLまたはHSV色空間を使って、彩度および/または強度を最大にして色を生成し、次に色相および/または値を変更してからRGBに変換することを提案します。それはより少ない灰色であなたを残します。 –