我正在尝试使用OpenCV开发应用程序。我现在买了一个Raspberry Pi Camera 3(Raspicam 3)。我正在尝试使用在https://www.uco.es/investiga/grupos/ava/node/40找到的API将我的代码从使用Webcam的标准版本迁移到Raspicam版本。
我所做的只是转换:
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);
我注意到的差异是raspberry pi camera 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 );
然后,它不会崩溃,但颜色看起来很怪异。 (例如橙色是蓝色的)
问题是,如何防止这种颜色变化?如何使用正确的参数设置相机以便拍摄正常照片?
我应该让你知道,我不会详细了解OpenCV,只是试图解决这些问题。
提前感谢您的帮助。 欢呼声,
修改 当我评论该行
时Camera.set( CV_CAP_PROP_FORMAT, CV_8UC1 );
一切都是蓝色的。所以我猜它与它没有任何关系。
编辑:添加了错误详情。
答案 0 :(得分:1)
您是否检查过Raspberry Pi的色彩空间是否与Open CV相同?
Open CV使用蓝绿红(BGR)惯例,这种情况并不常见。它可能对应于您的“蓝色”描述...
如果是这样,只需交换第一个和最后一个通道即可获得RGB值:)