打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
spilt+merge 2018-8-21

1、多通道图像的分离

cv::split()的具体调用方法如下:

  1. void cv::split(
  2. const cv::Mat& mtx, //输入图像
  3. vector<Mat>& mv // 输出的多通道序列(n个单通道序列)
  4. );


2、图像多个通道的合并

cv::merge()的具体调用方法如下:

  1. void merge(
  2. const vector<cv::Mat>& mv, // 输入的多通道序列(n个单通道序列)
  3. cv::OutputArray dst // 输出图像,包含mv
  4. );

可能有人会问为什么分离出的通道都是黑白灰,而不是红绿蓝。原因是分离后为单通道,相当于分离通道的同时把其他两个通道填充了相同的数值。比如红色通道,分离出红色通道的同时,绿色和蓝色被填充为和红色相同的数值,这样一来就只有黑白灰了。那么红色体现在哪呢?可以进行观察,会发现原图中颜色越接近红色的地方在红色通道越接近白色。

在纯红的地方在红色通道会出现纯白。

R值为255 -》RGB(255,255,255),为纯白

以下代码是将分理后的通道,将其余两个通道置零,合并
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat srclmage;
Mat imageROI;
vector<Mat> channels(3);
srclmage = cv::imread("F:\\数据集\\数字图像处理标准测试图\\结果图-at.jpg",1);
split(srclmage, channels);
// Show individual channels
cv::Mat blank_ch, fin_img;
blank_ch = cv::Mat::zeros(cv::Size(srclmage.cols, srclmage.rows), CV_8UC1);

// Showing Red Channel
// G and B channels are kept as zero matrix for visual perception
std::vector<cv::Mat> channels_r;
channels_r.push_back(blank_ch);
channels_r.push_back(blank_ch);
channels_r.push_back(channels[2]);
/// Merge the three channels
cv::merge(channels_r, fin_img);
cv::imshow("R", fin_img);
// Showing Green Channel
std::vector<cv::Mat> channels_g;
channels_g.push_back(blank_ch);
channels_g.push_back(channels[1]);
channels_g.push_back(blank_ch);
cv::merge(channels_g, fin_img);
cv::imshow("G", fin_img);


// Showing Blue Channel
std::vector<cv::Mat> channels_b;
channels_b.push_back(channels[0]);
channels_b.push_back(blank_ch);
channels_b.push_back(blank_ch);
cv::merge(channels_b, fin_img);
cv::imshow("B", fin_img);

cv::waitKey(0);
return 0;

}
 
 
 
 



1
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
opencv split和merge操作
OpenCV-通道合并cv::merge
深度学习(七)caffe源码c++学习笔记
[学习opencv]彩色图像通道分离、合成
【从零学习OpenCV 4】多通道分离与合并
Opencv之<vec3b>是什么东东 </vec3b>
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服