opencv颜色通道拆分后显示为什么是灰度图像

碗豆先生 2014-11-05 04:19:16

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
//#include<opencv2/opencv.hpp>

//#include<cassert>
//#include<vector>

using namespace std;
using namespace cv;

int main()
{
Mat srcImage=imread("girl.jpg",1);
Mat imageBlue,imageGreen,imageRed;
Mat mergeImage;
//定义一个Mat向量容器保存拆分后的数据
vector<Mat> channels;

//判断文件加载是否正确
assert(srcImage.data!=NULL);
namedWindow("Blue",CV_WINDOW_AUTOSIZE);
namedWindow("Green",CV_WINDOW_AUTOSIZE);
namedWindow("Red",CV_WINDOW_AUTOSIZE);
namedWindow("mergeImage",CV_WINDOW_AUTOSIZE);

//通道的拆分
split(srcImage,channels);

//提取蓝色通道的数据
imageBlue = channels.at(0);
imshow("Blue",imageBlue);
//提取绿色通道的数据
imageGreen = channels.at(1);
imshow("Green",imageGreen);
//提取红色通道的数据
imageRed = channels.at(2);
imshow("Red",imageRed);

//对拆分的通道数据合并
merge(channels ,mergeImage);
imshow("mergeImage",mergeImage);
waitKey();
system("pause");
return 0;
}

将图片颜色拆分后,为什么imageBlue,imageGreen,imageRed图像显示都是灰度图像而不是单一BGR图像,
求大神指导
...全文
1514 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssbqrm 2014-11-11
  • 打赏
  • 举报
回复 1
仅仅为了视觉上显示还是RGB,可以这么干,如果为了显示R通道的,把原始图像的GB通道的都置零,R通道的不变
碗豆先生 2014-11-06
  • 打赏
  • 举报
回复 1
引用 1 楼 relaxisland 的回复:
这个貌似没有为什么吧 分成 3个通道,就是 R,G,B各自的灰度图啊
那就对了,那怎么才能分别显示B,G,R的彩色的图片呢?
LICHUNLI1022 2014-11-06
  • 打赏
  • 举报
回复 1
B,G,R单通道图像,数据范围是0到255,显示出来就是黑白的啊。
relaxisland 2014-11-05
  • 打赏
  • 举报
回复 2
这个貌似没有为什么吧 分成 3个通道,就是 R,G,B各自的灰度图啊

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧