我刚从here尝试了RaspiCam C ++ API,我的照片颜色太蓝了:
由raspistill -o rcapture.jpg:
命令制作的照片
它有点太红了,但比第一个要好得多。
第一张照片是由this示例
制作的我的目标是通过C ++ API获取具有正常颜色的图像
Juanpalma提出的这个问题的最终解决方案是改变混合渠道:
cv::Mat image;
cv::Mat channels[3];
cv::Mat cbuffer[1];
Camera.grab();
Camera.retrieve(image);
cv::split(image, channels);
//here is the fix
cbuffer[0] = channels[0];
channels[0] = channels[2];
channels[2] = cbuffer[0];
merge(channels, 3, image);
//end
my_message = serialize(image);
答案 0 :(得分:1)
是红色和蓝色通道反转你必须处理缓冲区:
void interchange_colors(unsigned char *data, int tam)
{
unsigned char cR;
for(int i=0; i <= tam; i+=3){
cR = data[i];
data[i]=data[i+2];
data[i+2]=cR;
}
}