2017-01-17 8 views
0

OpenCVを使用してアプリケーションを開発しようとしています。私はラズベリーパイカメラ3(Raspicam 3)を手に入れました。 https://www.uco.es/investiga/grupos/ava/node/40にあるAPIを使用して、Webcamを搭載した標準版からRaspicam版に自分のコードを移行しようとしています。私が何をしたかWebCamから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); 

私が気付く違いは、ラズベリーパイカメラ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); 

を使用し、それはクラッシュしませんが、色はweiです見ている。 (例:オレンジは青)

質問:この色の変更を防止するにはどうすればよいですか?正しいパラメータでカメラをセットアップして、通常の写真を撮るにはどうすればよいですか?

私はOpenCVを詳しく知りませんが、これらのことを理解しようとしています。

ご協力いただきありがとうございます。 乾杯、

EDIT: 私は行をコメントすると

Camera.set(CV_CAP_PROP_FORMAT, CV_8UC1); 

すべてはまた、ブルーっぽいです。だから私はそれはそれと関係がないと思う。

EDIT:エラーの詳細が追加されました。

+0

'Camera.set(CV_CAP_PROP_FORMAT、CV_BGR2HSV);' - これは明らかに間違っています。「CV_BGR2HSV」はデータ型ではなく色変換コードです。 'CV_8UC1'は、カメラがまだ3チャンネルの画像をキャプチャしており、それらを1つのチャンネルマトリックスに収めようとしているため、失敗する可能性が最も高いです。 (BTWは、「プログラムがクラッシュする原因となる」というのは、この問題の悪い記述です。)| @SachaVakiliは、BGR2RGBをやっている単純な 'cvtColor'(またはその逆)がそれを修正すると考えています。 –

答えて

1

ラズベリーパイの色空間がOpen CVと同じであるかどうか確認しましたか?

Open CVは、それほど頻繁ではないBlue Green Red(BGR)規則を使用しています。もしそうなら、それは...あなたの「ブルーっぽい」の記述に

に対応かもしれない、ちょうどRGB値を取得するには、最初と最後のチャンネルを入れ替える:)

関連する問題