我正在嘗試使用OpenCV開發應用程序。我現在有了Raspberry Pi Camera 3(Raspicam 3)。我正嘗試使用在https://www.uco.es/investiga/grupos/ava/node/40處找到的API將我的代碼從Webcam的非標準版本遷移到Raspicam版本。從網絡攝像頭遷移到Raspicam時OpenCV的顏色問題
我所做的是簡單地轉換:
cv::Mat image;
VideoCapture cap(0); // open the default camera
cap >> image;
cap.release();
到
cv::Mat image;
raspicam::RaspiCam_Cv Camera;
Camera.set(CV_CAP_PROP_FORMAT, CV_8UC3);
Camera.grab();
Camera.retrieve (image);
Camera.release();
現在我把照片具有非常奇怪的顏色(好像倒),當我嘗試看看它
cv::imwrite("myimg.jpg",image);
我注意到的區別在於覆盆子pi相機API設置了這個值:
Camera.set(CV_CAP_PROP_FORMAT, CV_8UC1);
但是這個值會導致程序崩潰,
所以我要麼使用
Camera.set(CV_CAP_PROP_FORMAT, CV_8UC3);
或
Camera.set(CV_CAP_PROP_FORMAT, CV_BGR2HSV);
然後,它不會崩潰,但顏色是偉rd看。 (例如橙色是藍色的)
問題是,我該如何防止這種顏色變化?如何使用正確的參數設置相機,以便拍攝正常的照片?
我應該讓你知道,我不知道OpenCV的細節,只是試圖弄清楚這些事情。
在此先感謝您的幫助。 乾杯,
編輯: 當我發表意見線
Camera.set(CV_CAP_PROP_FORMAT, CV_8UC1);
一切也是藍色十歲上下。所以我想這跟它沒有任何關係。
編輯:增加了錯誤的詳細信息。
'Camera.set(CV_CAP_PROP_FORMAT,CV_BGR2HSV);' - 這顯然是錯誤的,'CV_BGR2HSV'是一種顏色轉換代碼,而不是數據類型。 'CV_8UC1'很可能會失敗,因爲相機仍然捕捉3個通道圖像,並嘗試將它們合併到單個通道矩陣中。 (順便說一句,「導致程序崩潰」是一個該死的糟糕的問題描述。)|正如@SachaVakili所暗示的,一個簡單的'cvtColor'做BGR2RGB(反之亦然)可能會修復它。 –