我想使用OpenCV 3.1.0和C++在這個Python例子之後創建一個對象跟蹤器: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是CV_8UC3,與cvtColor兼容(),並應在BGR色彩空間是最初。
我做了以下GIMP測試圖像:
我得到這個形象的結果:
我決定嘗試從BGR到RGB轉換,將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'通道順序)圖像可以使用此功能保存。「 –
非常感謝你丹!我真的沒有檢查,我認爲這個問題是在轉換,我沒有檢查imwrite()函數。再次感謝你! – user3368457