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