当前位置: 首页 > news >正文

10_opencv_分离颜色通道、多通道图像混合

split() 通道分离

void cv::split(const Mat & 	src,Mat * 	mvbegin )	

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

merge() 通道合并

void cv::merge(InputArrayOfArrays 	mv,OutputArray 	dst )	

在这里插入图片描述
在这里插入图片描述

Mat::at()方法

Mat::at()方法返回一个引用到指定的数组元素。
注意是引用,相当于两者等价,也就是修改其中一个,另一个也会随之改变。

imageBlueChannel= channels.at(0);

imageBlueChannel 变量操作,就是对channels.at[0] 进行操作。

多通道混合-蓝色分量部分

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

在这里插入图片描述

多通道混合-绿色分量部分

在这里插入图片描述
在这里插入图片描述

多通道混合-红色分量部分

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/602639.html

相关文章:

  • Netty中trySuccess和setSuccess的区别
  • Java程序员学从0学AI(七)
  • mybatis-plus-tenant-support
  • Caddy服务器指南
  • 工业计算机的重要性
  • C# 提取字符串 指定开始和结尾字符
  • JAVA+AI教程-第四天
  • 2,智能制造,MOM,MES - 柔性制造(具体内容参考PPT文档)
  • 接口测试核心概念与实践指南
  • 分享一个脚本,从mysql导出数据csv到hdfs临时目录
  • 安装及使用vscode
  • 基于EKF的单站相位差变化率定位实现
  • 【论文阅读】Safety Alignment Should Be Made More Than Just a Few Tokens Deep
  • Solidity基础(教程①-简单数字存储)
  • AI项目实战:使用Python进行专业级数据集处理的完整教程
  • MySQL面试题及详细答案 155道(001-020)
  • 生产力效能跃升 金士顿DDR5 5600内存
  • JavaWeb 新手学习路线:从零到全栈开发,系统掌握企业级 Web 开发技能
  • 经典算法题解析:从思路到实现,掌握核心编程思维
  • 开发笔记 | 实现人物立绘的差分效果
  • 四、计算机组成原理——第5章:存储系统
  • 电子电路原理学习笔记---第4章二极管电路---第3天
  • 架构师增效指南:飞算JavaAI:需求驱动下的智能微服务拆分与治理
  • 浏览器安全演进:从裸指针到 raw_ptr 的实践与思考
  • leetcode 2044. 统计按位或能得到最大值的子集数目 中等
  • RV1126B-P机器视觉应用AIoT及边缘计算算力达2.0支持 HDR 、 3DNR
  • 网安学习NO.19
  • 构建 P2P 网络与分布式下载系统:从底层原理到安装和功能实现
  • SystemClock_Config 函数解析
  • Office-PowerPoint-MCP-Server – 基于MCP的开源PPT生成与编辑工具