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

OpenCV 图形API(75)图像与通道拼接函数-----将 4 个单通道图像矩阵 (GMat) 合并为一个 4 通道的多通道图像矩阵函数merge4()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

由4个单通道矩阵创建一个4通道矩阵。

该函数将多个矩阵合并为一个单一的多通道矩阵。也就是说,输出矩阵的每一个元素都是输入矩阵对应位置元素的拼接组合,其中第i个输入矩阵的元素被视为具有 mv[i].channels() 个元素的向量。

输出矩阵的类型必须是 CV_8UC4 类型(即:每个像素由4个无符号8位字节组成)。

函数 split4 执行相反的操作。

注意

该函数的文本标识符(textual ID)是 “org.opencv.core.transform.merge4”。

函数原型

GMat cv::gapi::merge4 	
(const GMat &  	src1,const GMat &  	src2,const GMat &  	src3,const GMat &  	src4 
) 	

参数

  • 参数 src1:第一个要合并的 CV_8UC1 类型的输入矩阵。
  • 参数 src2:第二个要合并的 CV_8UC1 类型的输入矩阵。
  • 参数 src3:第三个要合并的 CV_8UC1 类型的输入矩阵。
  • 参数 src4:第四个要合并的 CV_8UC1 类型的输入矩阵。

返回值

返回一个 cv::GMat 对象,表示合并后的 4 通道图像。

代码示例

#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>  // 包含 merge4
#include <opencv2/opencv.hpp>int main()
{// 固定图像路径std::string imagePath = "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png";  // 建议使用带 alpha 通道的 PNG// 加载图像(尝试加载为透明图像)cv::Mat src = cv::imread( imagePath, cv::IMREAD_UNCHANGED );if ( src.empty() ){std::cerr << "无法加载图像: " << imagePath << std::endl;return -1;}// 如果不是 4 通道图像,转换成 4 通道(可选)if ( src.channels() != 4 ){cv::cvtColor( src, src, cv::COLOR_BGR2BGRA );}// 分离出 4 个通道std::vector< cv::Mat > channels;cv::split( src, channels );// 定义 G-API 输入节点(4 个单通道图像)cv::GMat g1, g2, g3, g4;// 定义 G-API 计算图操作:合并为一个 4 通道图像cv::GMat merged = cv::gapi::merge4( g1, g2, g3, g4 );// 构建 GComputationcv::GComputation comp( cv::GIn( g1, g2, g3, g4 ), cv::GOut( merged ) );// 输出容器cv::Mat out;// 将输入包装成 vector<Mat>std::vector< cv::Mat > inputs  = { channels[ 0 ], channels[ 1 ], channels[ 2 ], channels[ 3 ] };std::vector< cv::Mat > outputs = { out };// 执行计算图comp.apply( inputs, outputs, cv::compile_args() );// 获取输出图像out = outputs[ 0 ];// 检查输出是否有效if ( out.empty() ){std::cerr << "错误:合并后的图像为空!" << std::endl;return -1;}if ( out.rows <= 0 || out.cols <= 0 ){std::cerr << "错误:合并后的图像尺寸无效!" << std::endl;return -1;}// 显示结果cv::imshow( "原始图像", src );cv::imshow( "合并后图像 (merge4)", out );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

http://www.xdnf.cn/news/3251.html

相关文章:

  • 章越科技赋能消防训练体征监测与安全保障,从传统模式到智能跃迁的实践探索
  • Hbuilder 开发鸿蒙应用,打包成 hap 格式(并没有上架应用商店,只安装调试用)
  • 【Vue2】4-开发者工具安装
  • HOW - 经典详情页表单内容数据填充(基于 Antd 组件库)
  • 数据库服务器备份,数据库服备份到另一台服务器的方法有哪些?
  • 普通IT的股票交易成长史--20250430晚
  • python爬虫基础:requests库详解与案例
  • ESP32开发-作为TCP客户端发送数据到网络调试助手
  • 记录idea可以运行但是maven install打包却找不到问题
  • 【网络原理】从零开始深入理解HTTP的报文格式(二)
  • 第四节:权限管理
  • Vue3 Echarts 3D圆柱体柱状图实现教程以及封装一个可复用的组件
  • 仿腾信会议——密码MD5
  • 软件设计师-软考知识复习(1)
  • Deepseek应用技巧-批量生成读书金句
  • SAP 归档 自定义字段目录及归档信息结构
  • 〇 开篇序言
  • 写一个 Java 程序,用于将字符串中的指定子串替换为另一个子串
  • 倒排索引(Inverted Index)详解
  • Git常用指令速查
  • MySQL数据库全面详解:从基础到高级应用
  • 如何设计一个会员码表!唯一索引的使用,字段区分度不高如何处理
  • 第十五章:预训练大语言模型
  • 血管造影正常≠心脏没事!无创技术破解心肌缺血漏诊困局
  • FlexNoC-Latency
  • 【爬虫】案例-获取cbh电影
  • centos7 安装python3
  • Vue2+Vue3学习笔记
  • 线程同步与互斥核心要点整理
  • 即时设计笔记