总结下来,4个步骤:

就是重复:分离,引用返回,加权,合并的操作

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace cv;
using namespace std;bool  MultiChannelBlending();int main()
{system("color 9F");if (MultiChannelBlending()){cout << endl << "\n运行成功,得出了需要的图像~! ";}waitKey(0);return 0;
}bool  MultiChannelBlending()
{//【0】定义相关变量Mat srcImage;Mat logoImage;vector<Mat> channels;Mat  imageBlueChannel;logoImage = imread("C:/Users/离子键/source/repos/Project8/1.jpg", 0);srcImage = imread("C:/Users/离子键/source/repos/Project8/3.jpg");if (!logoImage.data) { printf("Oh,no,读取logoImage错误~! \n"); return false; }if (!srcImage.data) { printf("Oh,no,读取srcImage错误~! \n"); return false; }split(srcImage, channels);imageBlueChannel = channels.at(0);addWeighted(imageBlueChannel(Rect(0, 0, logoImage.cols, logoImage.rows)), 1.0,logoImage, 0.5, 0, imageBlueChannel(Rect(0, 0, logoImage.cols, logoImage.rows)));merge(channels, srcImage);namedWindow(" <1>游戏原画+logo蓝色通道");imshow(" <1>游戏原画+logo蓝色通道", srcImage);Mat  imageGreenChannel;//【1】重新读入图片logoImage = imread("C:/Users/离子键/source/repos/Project8/1.jpg", 0);srcImage = imread("C:/Users/离子键/source/repos/Project8/3.jpg");if (!logoImage.data) { printf("读取logoImage错误~! \n"); return false; }if (!srcImage.data) { printf("读取srcImage错误~! \n"); return false; }split(srcImage, channels);//分离色彩通道imageGreenChannel = channels.at(1);addWeighted(imageGreenChannel(Rect(0, 0, logoImage.cols, logoImage.rows)), 1.0,logoImage, 0.5, 0., imageGreenChannel(Rect(0, 0, logoImage.cols, logoImage.rows)));merge(channels, srcImage);namedWindow("<2>游戏原画+logo绿色通道");imshow("<2>游戏原画+logo绿色通道", srcImage);//=================【红色通道部分】=================//    描述:多通道混合-红色分量部分//============================================//【0】定义相关变量Mat  imageRedChannel;//【1】重新读入图片logoImage = imread("C:/Users/离子键/source/repos/Project8/1.jpg", 0);srcImage = imread("C:/Users/离子键/source/repos/Project8/3.jpg");if (!logoImage.data) { printf("Oh,no,读取logoImage错误~! \n"); return false; }if (!srcImage.data) { printf("Oh,no,读取srcImage错误~! \n"); return false; }//【2】将一个三通道图像转换成三个单通道图像split(srcImage, channels);//分离色彩通道//【3】将原图的红色通道引用返回给imageBlueChannel,注意是引用,相当于两者等价,修改其中一个另一个跟着变imageRedChannel = channels.at(2);//【4】将原图的红色通道的(500,250)坐标处右下方的一块区域和logo图进行加权操作,将得到的混合结果存到imageRedChannel中addWeighted(imageRedChannel(Rect(0, 0, logoImage.cols, logoImage.rows)), 1.0,logoImage, 0.5, 0., imageRedChannel(Rect(0, 0, logoImage.cols, logoImage.rows)));//【5】将三个独立的单通道重新合并成一个三通道merge(channels, srcImage);//【6】显示效果图namedWindow("<3>游戏原画+logo红色通道 ");imshow("<3>游戏原画+logo红色通道 ", srcImage);return true;
}

官方源码复制用:

毛星云opencv--多通道图像混合官方源码相关推荐

  1. 转载:【OpenCV入门教程之五】 分离颜色通道多通道图像混合

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21176257 作者:毛星云(浅墨) ...

  2. 【OpenCV入门教程之五】 分离颜色通道多通道图像混合(转)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21176257 作者:毛星云(浅墨) ...

  3. 【OpenCV C++】分离颜色通道多通道图像混合

    分离颜色通道&多通道图像混合 一.分离颜色通道 <1>split函数详解 <2>merge函数详解 二.多通道图像混合示例程序 本系列文章由@浅墨_毛星云 出品,转载请 ...

  4. OpenCV系列四 --- 颜色通道分离与多通道图像混合

    今天呢,我们一起来学习彩色图像的颜色通道分离与多通道图像混合,一般情况下,我们大多数看到的图像都是基于RGB颜色通道的图像,因此要实现颜色通道的分离,即要将R.G.B三个通道分离,而多通道图像混合,即 ...

  5. 【OpenCV(C++)】分离颜色通道、多通道图像混合

    [OpenCV(C++)]分离颜色通道.多通道图像混合 通道分离:split()函数 通道合并:merge()函数 多通道图像混合实例 为了更好地观察一些图像材料的特征,需要对RGB三个颜色通道的分量 ...

  6. OpenCV算法加速(4)官方源码v4.5.5的默认并行和优化加速的编译选项是什么?请重点关注函数cv::getBuildInformation()的返回值

    举例opencv v4.5.5版本源码,Windows x64,VS2019,CMake https://github.com/opencv/opencv/tree/4.5.5 https://sou ...

  7. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]

    1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统 ...

  8. [HOW TO]-下载android官方源码

    介绍下载android官方源码的方式: 使用每月更新的初始化包 传统初始化方法 1.使用每月更新的初始化包 下载初始化包->repo sync wget -c https://mirrors.t ...

  9. 部署shiro官方源码时,执行maven命令出错

    转载自  部署shiro官方源码时,执行maven命令出错 部署shiro官方源码时,执行maven命令会报下面错误: [INFO] --------------------------------- ...

最新文章

  1. IDE:集成开发环境(Integrated Development Environment)
  2. 花生问题——百练OJ:2950:摘花生与1928:The Peanuts
  3. Android-Activity启动流程
  4. 我整理的一个经典分页程序(JSP的)
  5. mv命令移动文件到指定目录
  6. 10年程序员谈.Net程序员的职业规划
  7. 邻接矩阵中啥时候写0和无穷_(一)UDS诊断服务中的诊断会话控制(DiagnosticSessionControl,0x10)...
  8. 01组-选题与需求分析报告
  9. 计算机附件常用工具,Windows附件常用工具
  10. 第十六届—振兴杯计算机网络管理员决赛模拟题
  11. LINUX编译xcb/xcb-proto
  12. 用python实现围棋(动图演示+源码分享)
  13. EXCEL技能1:SUMIFS 小白详解
  14. fix-下拉出现白条问题
  15. 云服务器与物理服务器有什么区别?
  16. 转载:Session与JWT的使用
  17. 【PowerPoint】如何在PPT幻灯片添加“当前页/总页数”格式的页码
  18. QImage 图像格式小结 Format_RGB32
  19. Python递归函数返回阶乘
  20. 【Android】Android的应用架构

热门文章

  1. 51单片机printf重定向
  2. 老王的电影网站 - 推荐系统入门(一)
  3. Java容器(集合)
  4. 简单工厂、工厂、抽象工厂
  5. 微信小程序---轮播图
  6. 标签打印软件如何设置不规则标签纸
  7. oracle索引管理
  8. spyder中安装第三方库的包
  9. C语言——归并排序,单线程,多线程(Linux系统下实现)两种实现方法
  10. python之遍历技巧