OpenCV 3.1.0とC++を使ってオブジェクトトラッカーを作成しようとしています。http://docs.opencv.org/3.1.0/df/d9d/tutorial_py_colorspaces.html#gsc.tab=0です。OpenCV - cvtColorは色空間を変更しません。色が変わります。
cvtColor()関数には色空間を変更するのではなく、画像の色を変更するためにいくつかの問題があります。私はこのコードを持っている:
Mat original_image;
original_image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // The image is passed as arg
if (!original_image.data)
{
printf("Problem!\n");
return -1;
}
// From BGR to HSV
Mat hsv_image(original_image.rows, original_image.cols, original_image.type());
cvtColor(original_image, hsv_image, CV_BGR2HSV);
imwrite("hsv_image.png", hsv_image);
original_imageがcvtColorと互換性がCV_8UC3、()で、BGRの色空間にもともとある必要があります。
私はGIMPと下のテスト画像作ら:
をそして私は、結果として、この画像を取得する:
私はRGBへのBGRからの変換をしようとすることを決めました、 BGR2HSVをBGR2RGBに変更し、同じテスト画像でこの結果を得る。
ここ
は、それが
は誰を持っています...画像のチャンネルが直接変更されていることをより明確だ、ここで何が起こっているのかについての任意のアイデア?
を使用して画像を保存したい場合は、([HSV画像](https://en.wikipedia.org/wiki/HSL_and_HSV)のチャンネルを解釈しています色相、彩度、値)をそれぞれ青、緑、赤として表示します。結果として何を得ることが期待されましたか(imwriteはBGRを期待しています)? –
基本的には、この重要な情報は、['imwrite()'](http://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html#imwrite)のドキュメントで気付かなかった:この機能を使用して、8ビット... 3チャンネル( 'BGR'チャンネル順)の画像のみを保存することができます。 –
Danさんありがとう!私は実際にそれをチェックしなかった、私は問題が変換にあったと思っていたし、imwrite()関数をチェックしなかった。ありがとうございました! – user3368457