2017-01-17 47 views
0

我正在嘗試使用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); 

但是這個值會導致程序崩潰,

enter image description here

所以我要麼使用

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); 

一切也是藍色十歲上下。所以我想這跟它沒有任何關係。

編輯:增加了錯誤的詳細信息。

+0

'Camera.set(CV_CAP_PROP_FORMAT,CV_BGR2HSV);' - 這顯然是錯誤的,'CV_BGR2HSV'是一種顏色轉換代碼,而不是數據類型。 'CV_8UC1'很可能會失敗,因爲相機仍然捕捉3個通道圖像,並嘗試將它們合併到單個通道矩陣中。 (順便說一句,「導致程序崩潰」是一個該死的糟糕的問題描述。)|正如@SachaVakili所暗示的,一個簡單的'cvtColor'做BGR2RGB(反之亦然)可能會修復它。 –

回答

1

您是否檢查過Raspberry Pi的色彩空間是否與Open CV相同?

Open CV使用藍綠紅(BGR)約定,這並不常見。它可能符合您的「藍十歲上下的」說明...

如果是這樣,只要將第一和最後一個渠道得到的RGB值:)