Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
拉斯皮凸轮C++;API-图像的颜色 我刚刚尝试过RasiCAM+C++ API,我的照片颜色太蓝了: _C++_Opencv_Raspbian_Raspberry Pi2 - Fatal编程技术网

拉斯皮凸轮C++;API-图像的颜色 我刚刚尝试过RasiCAM+C++ API,我的照片颜色太蓝了:

拉斯皮凸轮C++;API-图像的颜色 我刚刚尝试过RasiCAM+C++ API,我的照片颜色太蓝了: ,c++,opencv,raspbian,raspberry-pi2,C++,Opencv,Raspbian,Raspberry Pi2,照片由命令制作raspistill-o rcapture.jpg: 它有点太红了,但比第一个好多了 第一张照片是通过示例拍摄的 我的目标是通过C++ API < /P>获取具有正常颜色的图像。 Juanpalma提出的这一问题的最终解决方案是改变混合渠道: cv::Mat image; cv::Mat channels[3]; cv::Mat cbuffer[1]; Camera.grab(); Camera.retrieve(image); cv::

照片由命令制作
raspistill-o rcapture.jpg:
它有点太红了,但比第一个好多了

第一张照片是通过示例拍摄的

我的目标是通过C++ API < /P>获取具有正常颜色的图像。 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);

是的,红色和蓝色通道反转。您必须处理缓冲区:

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;
  }
}
void interchange\u颜色(无符号字符*数据,int-tam)
{
无符号字符cR;

对于(int i=0;我需要调整白平衡。有一个自动模式,请检查文档。@adrianN这不是白平衡问题,看起来红色和蓝色通道颠倒了。@MarkRansom可能你是对的,但如何修复它?在不了解更多问题的情况下,很难说。你如何显示图像?我不熟悉eno呃,为了帮助你,我添加了标签,希望能得到一些答案。谢谢Juanpalma的回答。我不知道你提到的代码应该放在哪里,但我在这里找到了如何更改频道的方法。总之,它解决了相机图片的问题,所以我接受你的答案。