OpenCV 图形API(67)图像与通道拼接函数-----水平拼接(横向连接)两个输入矩阵(GMat 类型)函数concatHor()

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

算法描述

该函数用于水平拼接两个 GMat 矩阵,要求输入矩阵的行数必须一致:

GMat A = { 1, 4,2, 5,3, 6 };
GMat B = { 7, 10,8, 11,9, 12 };
GMat C = gapi::concatHor(A, B);
//C:
//[1, 4, 7, 10;
// 2, 5, 8, 11;
// 3, 6, 9, 12]

输出矩阵的行数和数据类型必须与 src1 和 src2 相同,其列数为 src1 和 src2 列数之和。支持的矩阵数据类型包括:CV_8UC1、CV_8UC3、CV_16UC1、CV_16SC1、CV_32FC1。

注意

该函数的文本标识符为 “org.opencv.imgproc.transform.concatHor”。

参数

  • 参数 src1:第一个输入矩阵(参与水平拼接)。

  • 参数 src2:第二个输入矩阵(参与水平拼接)。

返回值

返回一个新的 GMat,表示水平拼接后的结果。

代码示例

#include <iostream>
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <opencv2/opencv.hpp>int main()
{// 读取图像(确保尺寸和类型匹配)cv::Mat mat1 = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/stich1.png", cv::IMREAD_COLOR );cv::Mat mat2 = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/stich2.png", cv::IMREAD_COLOR );if ( mat1.empty() || mat2.empty() ){std::cerr << "无法加载图像!" << std::endl;return -1;}// 强制统一尺寸和类型(G-API不会自动调整)if ( mat1.rows != mat2.rows ){cv::resize( mat2, mat2, cv::Size( mat2.cols, mat1.rows ) );}if ( mat1.type() != mat2.type() ){mat2.convertTo( mat2, mat1.type() );}// 构建G-API计算图cv::GMat in1, in2;cv::GMat out = cv::gapi::concatHor( in1, in2 );cv::GComputation comp( cv::GIn( in1, in2 ), cv::GOut( out ) );// 执行计算图cv::Mat result;comp.apply( cv::gin( mat1, mat2 ), cv::gout( result ) );cv::imshow( "G-API拼接结果", result );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.1 点云数据获取方式——引言

图1-1-1点云建筑场景图 点云数据是指能够描述外部场景、对象表面的三维空间位置&#xff0c;并具有相关属性的点集&#xff0c;其每个离散点通常包括三维空间位置&#xff08;x,y,z&#xff09;以及强度、颜色等属性信息。大量分布的离散点集能够清晰而直接地描绘场景、对象的3…

[Verilog]跨时钟域数据传输解决方案

跨时钟域数据传输解决方案 摘要:跨时钟域数据传输 (Clock Domain Crossing, CDC) 是 SoC 设计中常见且关键的问题,因为现代 SoC 通常包含多个时钟域,不同模块可能运行在不同频率或相位的时钟下。跨时钟域传输数据时,如果处理不当,可能会导致亚稳态 (Metastability)…

Kotlin与Jetpack Compose的详细使用指南

Kotlin与Jetpack Compose的详细使用指南&#xff0c;综合最新技术实践和官方文档整理&#xff1a; 一、环境配置与基础架构 ‌项目创建‌ 在Android Studio中选择Empty Compose Activity模板&#xff0c;默认生成包含Composable预览的MainActivity2要求Kotlin版本≥1.8.0&…

预订接口优化:使用本地消息表保证订单生成、库存扣减的一致性

&#x1f3af; 本文介绍了一种优化预订接口的方法&#xff0c;通过引入本地消息表解决分布式事务中的最终一致性问题。原先的实现是在一个事务中同时扣减库存和创建订单&#xff0c;容易因网络不稳定导致数据不一致。改进后的方法将业务操作和消息发送封装在本地事务中&#xf…

计算机网络——客户端/服务端,URI与URL的区别,以及TCP/IP核心机制全解析

文章目录 客户端/服务端&#xff0c;URI与URL的区别&#xff0c;以及TCP/IP核心机制全解析一、客户端/服务端通信模型概述二、URI 与 URL 的概念与区别1. URL&#xff08;统一资源定位符&#xff09;2. URI&#xff08;统一资源标识符&#xff09;3. URI 与 URL 的关系 三、SYN…

柔性PZT压电薄膜多维力传感器在微创手术机器人的应用

随着医疗技术的迅速发展&#xff0c;微创手术机器人正在成为外科手术的重要助手。与传统开放式手术相比&#xff0c;微创手术创伤小、恢复快、感染率低&#xff0c;对手术器械的精细操控性和感知能力提出了更高要求。多维力传感器作为机器人“触觉”的核心部件&#xff0c;对提…

SpringAI整合DeepSeek生成图表

利用Spring-ai-openai集成DeepSeek ①、在DeepSeek开放平台创建API KEY ②、创建springboot项目&#xff0c;引入spring-ai-openai依赖&#xff0c;创建配置文件&#xff0c;配置deepseek的url和api key ③、具体的实现业务应用 RestController public class ChatD…

xss-lab靶场基础详解第1~3关

第一关 我去&#xff0c;还是得多学基础啊 http://127.0.0.1/xss-labs/level1.php?name<u>a</u> 这个看他的网站源码&#xff0c;可以看到他没有过滤&#xff0c;没有被编码 然后在name<script>alert(1)</script>&#xff0c;就算过关了 第二关 …

【MySQL】聚合查询 和 分组查询

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 目录 &#x1f334; 一、聚合查询 &#x1f332;1.概念 &#x1f332;2.聚合查询函数 COUNT&#xff08;&#xff09; SUM&#xff08;&#xff09; AVG&#xff08;&…

计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。

建议在电脑上看&#xff0c;手机上格式有点问题&#xff0c;认真读&#xff0c;这方面没问题的&#xff0c;肝了一天。 目录.计算机启动详解 一.计算机启动直观图二.步骤详解前置准备磁盘初始化1.开机阶段2.执行BIOS阶段3.执行引导记录&#xff08;MBR&#xff09;阶段4.操作系…

后端开发技术之Log日志框架

第一章 日志原理 1.1 log发展历史 从JDK1.4开始提供java.until.logging&#xff0c;后来大佬发现JUL太难用了&#xff0c;就自己手撸了个log4j&#xff0c;后来log4j发现安全漏洞&#xff0c;加上代码结构问题难以维护&#xff0c;于是从1.2就停止更新log4j&#xff0c;并又重…

美丽天天秒链动2+1源码(新零售商城搭建)

什么是链动21模式&#xff1f; 链动21主要是建立团队模式&#xff0c;同时快速提升销量。是目前成员中速度最快的裂变模式。链动21模式合理合规&#xff0c;同时激励用户 公司的利润分享机制&#xff0c;让您在享受购物折扣的同时&#xff0c;也能促进并获得客观收益。 链动21模…

Python10天冲刺-设计模型之策略模式

策略模式是一种行为设计模式&#xff0c;它允许你在运行时动态地改变对象的行为。这种模式的核心思想是将一组相关的算法封装在一起&#xff0c;并让它们相互替换。 下面是使用 Python 实现策略模式的一个示例&#xff1a; 示例代码 假设我们有一个简单的购物车系统&#xf…

【CTFer成长之路】XSS的魔力

XSS闯关 level1 访问url&#xff1a; http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss&#xff0c;所以对传参进行测试&#xff0c;修改?username1&#xff0c;进行访问 会发现username参数传入什么&#xff0c;welcome之后就…

自主机器人模拟系统

一、系统概述 本代码实现了一个基于Pygame的2D自主机器人模拟系统&#xff0c;具备以下核心功能&#xff1a; 双模式控制&#xff1a;支持手动控制&#xff08;WASD键&#xff09;和自动导航模式&#xff08;鼠标左键设定目标&#xff09; 智能路径规划&#xff1a;采用改进型…

快速上手非关系型数据库-MongoDB

简介 MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;由 MongoDB Inc. 开发。 NoSQL&#xff0c;指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写&#xff0c;是对不同于传统的关系型数据库的数据库管理系统的统称。 MongoDB 的设计理念是为了应对大数据量、…

性能优化实践:启动优化方案

性能优化实践&#xff1a;启动优化方案 在Flutter应用开发中&#xff0c;启动性能是用户体验的第一印象&#xff0c;也是应用性能优化的重要环节。本文将从理论到实践&#xff0c;深入探讨Flutter应用的启动优化方案。 一、Flutter应用启动流程分析 1. 启动类型 冷启动&…

在文本废墟中打捞月光

在文本废墟中打捞月光 ----再读三三的《山顶上是海》之“暗室”所理 今天是2025年5月1日&#xff0c;传统的“五一”小长假。当我早饭后“坐”在卫生间的那几分钟里&#xff0c;闺女和儿子就骑着家中仅有的两辆电动车去了图书馆。我是该做些什么&#xff1f; 于是我左手拿着三…

C++之类和对象基础

⾯向对象三⼤特性&#xff1a;封装、继承、多态 类和对象 一.类的定义1. 类的定义格式2.类域 二.实例化1.对象2.对象的大小 三.this指针 在 C 的世界里&#xff0c;类和对象构成了面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;的核心框架&…

计算机网络——HTTP/IP 协议通俗入门详解

HTTP/IP 协议通俗入门详解 一、什么是 HTTP 协议&#xff1f;1. 基本定义2. HTTP 是怎么工作的&#xff1f; 二、HTTP 协议的特点三、HTTPS 是什么&#xff1f;它和 HTTP 有啥区别&#xff1f;1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信过程步骤详解&#xff1a; 五、常见…