CasaOS上部署1Panel开源运维面板远程在线访问配置实操指南
文章目录
- 前言
- 1. 添加镜像源
- 2. 部署1Panel
- 3. 本地访问测试
- 4. 安装内网穿透工具
- 5. 配置公网地址
- 6. 配置固定公网地址
前言
很多时候在尝试远程管理服务器时,常常会遇到各种各样的麻烦,尤其是缺乏公网IP或者路由器设置过于复杂时,更是让人感到头大。但现在,有一个绝佳的解决方案可以帮助你轻松解决这些问题——在CasaOS香橙派Zero3上使用Docker部署开源运维面板1Panel,并结合cpolar内网穿透技术实现远程访问。
想象一下,无论你身处何地,即使是在旅途中或者舒适地躺在沙发上,都能方便地管理你的服务器,是不是感觉自己瞬间成为了技术高手?对于专业的运维人员和个人站长来说,这绝对是一大福音,能够大大提高工作效率。最近,我们看到越来越多的用户在fnOS系统上分享使用1Panel的体验,都表示它让Docker容器的管理变得简单又高效。今天,我们就将手把手教你如何在这一台小巧但强大的设备上部署1Panel,并通过cpolar内网穿透技术实现远程访问。
1. 添加镜像源
我这里演示的环境是已经刷好CasaOS的香橙派Zero3小主机。
不知道如何操作的可以看下这篇教程:[香橙派Orange Pi zero3如何刷CasaOS轻NAS系统](香橙派Orange Pi zero3刷CasaOS轻NAS系统与远程浏览本地文档或影视资源_哔哩哔哩_bilibili)
首先,我们需要在浏览器中输入香橙派ip地址,进入CasaOS管理界面。
然后进入终端,使用root账号密码登录。
进入终端后执行下方命令:
nano /etc/docker/daemon.json
在编辑器中输入新的镜像源地址:
{
"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.1panel.live"
]
}
然后按Crtl+X键保存这个镜像源,退出编辑器回到终端后执行下方命令重新启动docker服务:
2. 部署1Panel
上边的操作完成之后,我们回到casaos主界面点击系统自带的App Store应用中心。
刚安装casaos系统会发现里边的应用太少了,其实官方是给出了手动添加更多应用的方法的,只要点击目前APP下拉框中的更多应用。
然后点击问号,会自动在浏览器中打开一个添加更多应用的页面:
复制这个页面中的这些地址,然后回到CasaOS应用中心界面。
将地址粘贴到刚才带有问号的输入框中,然后点击添加,系统就会自动更新更多应用到应用中心界面,可以从几十个增加到几百个。
在添加应用时,就可以在应用商店中搜索1panel,出现后点击安装即可自动进行部署:
安全前会弹出提示框,显示登录所需的相关信息,截图保存即可。
部署完成后,点击打开,即可在浏览器中访问1panel面板的web登录界面:
PS:如果想在终端中使用命令行安装,大家可以访问1panel的官网:https://1panel.cn/docs/installation/online_installation/ 选择自己服务器的系统,复制命令行进行安装。安装过程中会提示设置账号密码与端口等信息。
3. 本地访问测试
在登录框中输入安装前提示框中显示的账号密码即可登录
在首页我们可以看到CPU、内存、主机负载、磁盘和网络等情况,网站相关信息与服务器数据监控信息。
点击应用商店也能看到包括 Halo 和 WordPress 在内的多种主流建站工具,用户可以在 1Panel 应用商店中为自己的服务器一键安装这些建站软件,借助它们快速搭建个人博客或者企业官网等站点。在管理网站时,域名设置、网站目录、HTTPS、伪静态、防盗链、重定向、密码保护和流量限制等设置都可以在1Panel中实现。
而在容器菜单中,可以像在portainer中一样管理docker容器,而且支持中文,确实体验更好。
点击主机可以看到支持可视化界面快速实现文件管理,无需命令行,就能进行复制、移动、重命名和删除等常见的操作,从而实现文件的浏览、上传、下载和管理。有效简化了管理流程,提供了快捷高效的体验。
4. 安装内网穿透工具
此时,我们已经成功在本地的CasaOS香橙派主机中部署了1panel面板,但仅能在本地局域网中使用,有一定局限性。如果想在出差时也能远程访问家中的1panel面板,来查看服务器情况或是管理容器该怎么办呢?
很简单,只要在香橙派中安装一个cpolar内网穿透工具就能轻松实现远程访问内网主机中部署的服务了,接下来介绍一下如何安装cpolar内网穿透。
首先,点击左上角进入终端:
输入root账号密码登录:(不知道如何获取密码可以看上文中提到的刷机教程)
然后在终端中执行下方一行命令,即可安装cpolar内网穿透工具:
curl -fsSL https://get.cpolar.sh | sudo sh
安装完毕后可以执行下方命令查看服务状态:
systemctl status cpolar
如下图所示即为cpolar内网穿透服务正在正常运行。
5. 配置公网地址
然后我们使用CasaOS香橙派的IP地址加上9200,打开一个新的浏览器来登录cpolar管理界面 :
PS:香橙派的IP地址可以在路由器中查看,名为orangepizero3的就是。
如果没有账号可以点击免费注册访问cpolar官网注册账号:https://www.cpolar.com
输入账号密码登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
隧道名称:可自定义,注意不要与已有的隧道名称重复,本例使用了:casa1pan
协议:http
本地地址:10086
域名类型:随机域名
地区:选择China VIP
点击创建
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和 https,任选其一,结尾加上1panel登录提示框中显示的默认入口后缀:/entrance 登录到浏览器访问即可。登录后在地址栏中只显示cpolar生成的公网地址。
登录刚才使用的账号密码后,我们就可以使用手机、平板等设备在浏览器成功远程访问本地casaos香橙派zero3中部署的1panel面板的Web管理界面啦!
如果想要修改登录面板的账号密码,可以在面板设置中进行修改:
小结
为了方便演示,我们在上边的操作过程中使用cpolar生成的公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,不好记,而且这个地址在24小时内会发生随机变化,更适合于临时测试使用。
如果有长期远程访问本地casaos香橙派中的1panel面板,或者远程访问其他本地服务的需求,又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择配置固定的公网地址来远程访问。
6. 配置固定公网地址
登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择China VIP,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称,这里我填写的是 my1pan
,大家也可以自定义喜欢的名称。
保留成功后复制保留成功的二级子域名的名称: my1pan
,返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道 casa1pan
,点击右侧的编辑:
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名:my1pan
- 地区:选择China VIP
点击更新
(注意,点击一次更新即可,不需要重复提交)
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,由随机地址名称变成了两个固定的二级子域名(固定公网地址):
最后,我们使用任意一个固定公网地址+默认入口(本例中为https://my1pan.vip.cpolar.cn/entrance)
在浏览器访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以远程访问本地局域网内的casaos香橙派主机端中1panel面板了!
看完这篇文章,相信你已经掌握了在CasaOS香橙派Zero3上使用Docker本地部署1Panel的方法,结合cpolar内网穿透技术,让你从此告别公网IP和复杂路由器设置的束缚,随时随地都能远程管理服务器。运维再也不是难题,而是充满乐趣的挑战!赶紧动手试试吧,让1Panel和cpolar成为你的得力助手,享受高效便捷的服务器管理体验。别忘了,掌握了这些技能后,你就是那个朋友圈里被羡慕的对象啦!快来加入这场运维革命,让你的朋友都为你竖起大拇指吧!
相关文章:
CasaOS上部署1Panel开源运维面板远程在线访问配置实操指南
文章目录 前言1. 添加镜像源2. 部署1Panel3. 本地访问测试4. 安装内网穿透工具5. 配置公网地址6. 配置固定公网地址 前言 很多时候在尝试远程管理服务器时,常常会遇到各种各样的麻烦,尤其是缺乏公网IP或者路由器设置过于复杂时,更是让人感到…...
深入理解缓存淘汰策略:LRU 与 LFU 算法详解及 Java 实现
一、LRU (Least Recently Used - 最近最少使用) LRU 策略的核心思想是:当缓存空间不足时,优先淘汰最近最长时间未被访问的数据。它基于“时间局部性”原理,即最近被访问的数据,在未来被访问的概率也更高。 LeetCode 146. LRU 缓…...
小智项目架构分析
小智代码架构 .github 这就是github项目上拉下来的一些信息 没什么好看的,这跟项目代码无关 .build 编译时生成的文件,没什么可看的,与项目代码无关 .main 主要的代码都在这里面了 .managed_components 这里是小智用到的一些第三方移植…...
基于 SSE 和分块传输的 Uniapp 微信小程序 实现 流式传输 对话
最近的项目是做微信小程序的一个对话框,接入DeepSeek,实现实时对话一个功能。 主要用到的技术点为: 1. Server-Sent Events (SSE) 技术: 在请求头中设置了 ‘X-DashScope-SSE’: ‘enable’,启用了SSE协议 服务器以事…...
[OS] POSIX C库介绍
POSIX C 库可以理解为 Unix/Linux系统的"标准化工具包",用一句话概括就是: 👉 它提供了一套跨Unix系统的统一编程接口,让开发者用同一份代码能在不同系统(如Linux、macOS)中运行。 核心组成&…...
<uniapp><插件><UTS>在uniapp中,创建自己的插件并发布到uni插件市场
前言 本专栏是基于uniapp实现手机端各种小功能的程序,并且基于各种通讯协议如http、websocekt等,实现手机端作为客户端(或者是手持机、PDA等),与服务端进行数据通讯的实例开发。 发文平台 CSDN 环境配置 系统&…...
深度学习前沿探秘:Transformer 模型与多领域应用
技术点目录 注意力(Attention)机制详解自然语言处理(NLP)领域的Transformer模型详解计算视觉(CV)领域的Transformer模型详解时间序列建模与预测的大语言模型目标检测算法详解目标检测的大语言模型语义分割的…...
介绍下Nginx的作用与请求转发机制
引言 最近笔者在业务中遇到了Nginx轮训策略使用不当导致后端服务的压力增加,从而导致容器CPU资源不足,响应超时的问题; 但由于对Nginx的了解仅限与作为反向代理使用,所以借用GPT工具整理了Nginx的作用以及请求转发机制ÿ…...
Sql刷题日志(day6)
一、笔试 1、insert ignore:在插入数据时忽略主键冲突或其他唯一性约束冲突。 如果插入的记录会导致主键冲突(如 actor_id 已存在),该语句不会报错,而是直接忽略插入操作 语法: INSERT IGNORE INTO tab…...
Ajax 提交表单与文件上传
目录 一、Ajax 提交表单1.1 基本原理1.2 HTML 表单示例1.3 JavaScript 示例(使用 fetch API)二、Ajax 文件上传2.1 基本原理2.2 HTML 文件上传表单示例2.3 JavaScript 示例(使用 fetch API)三、后端处理示例(以 Node.js + Express 为例)3.1 安装依赖3.2 创建服务器文件四…...
【零基础入门】ASP.NET Core快速搭建第一个Web应用
一、为什么选择ASP.NET Core? 跨平台支持:可在Windows/macOS/Linux系统运行 高性能:比传统ASP.NET框架快10倍以上 开源生态:活跃的开发者社区和丰富的NuGet包 云原生支持:完美适配Docker和Kubernetes部署 二、开发…...
盒子模型
1.1看透网页布局的本质 1.2盒子模型的组成部分 css盒子模型本质是一个盒子,封装周围的html元素,它包括边框 外边距 内边距和实际内容。 padding:盒子与内容间的距离margin:盒子与盒子间的距离 1.3border边框 1.border-width 边…...
厚铜PCB如何兼顾质量与成本?供应商设计规范执行的黄金平衡点
厚铜电路板供应商需要遵循一系列设计规范,以确保所提供的电路板符合行业标准和客户要求。以下是一些需要遵循的设计规范: 1. 电路板尺寸和形状:厚铜电路板供应商需要按照客户提供的规格和要求来设计电路板的尺寸和形状。一般来说,…...
Kafka 配置参数性能调优建议
文章目录 1、生产者调优batch.size(重要)linger.mscompression.typeacks(重要)buffer.memorymax.in.flight.requests.per.connection(重要)message.max.bytes(重要) 2、消费者调优fe…...
Java读Excel:解析阿里云easyExcel导入文件的行号
文章目录 引言I 解析阿里云easyExcel导入文件的行号声明解析对象的基类判断Excel解析对象类型是否包含继承某个类 isAssignableFromJava 转换list类型并设置下标到元素对象属性II 封装excel 文件读取excel 文件读取用法文件导入上下文III 参数校验工具类校验参数是否合法 (jaka…...
Vuex持续保存数据 页面刷新不丢失 vuex-persistedstate
vuex可以进行全局的状态管理,但刷新后刷新后数据会消失,这是我们不愿意看到的。怎么解决呢,我们可以结合本地存储做到数据状态持久化,但是太麻烦每次都要操作,强烈建议使用插件利用vuex-persistedstate插件. 安装 npm …...
.NET8配置组件
一、组件的概念 含义:用于从配置文件中读取配置的组件,叫做配置组件。简单来说, 就是从xml、json、yaml、txt等文件中读取配置的组件。主要采用微软提供的 Microsoft.Extensions.Configuration 二、组件的使用 1、json配置读取 (1)、在Dunk.Common.Project.Configuratio…...
加密算法:ed25519和RSA
ed25519 和 RSA 是两种不同的非对称加密算法,常用于 SSH 密钥认证。以下是它们的对比和选择建议: 1. 算法对比 特性ed25519RSA (4096-bit)安全性更高(基于椭圆曲线密码学 ECC)高(依赖大数分解难度)密钥长度固定 256 位(公钥/私钥更短)通常 2048/4096 位(公钥较大)性能…...
递归、搜索和回溯算法《递归》
在之前的优选算法当中我们已经学习了一些基本的算法,那么接下来我们就要来学习算法当中的一大重要章节——递归、搜索和回溯算法,其实也就是大家常常听到的dfs、bfs;其实本质就是递归,在学习搜索、回溯等算法的过程当中我们会先来…...
构建“云中”高并发:12306技术改造的系统性启示
作为曾参与12306余票查询系统高并发升级的技术从业者,笔者注意到公众对于12306底层技术常存在认知盲区。为破解这一迷思,特此分享十年前的架构解密文献(该技术之前名叫 gemfire 现已晋升为Apache顶级项目Geode,代码库详见…...
升级xcode15 报错Error (Xcode): Cycle inside Runner
升级xcode15后报错 Could not build the precompiled application for the device. Error (Xcode): Cycle inside Runner; building could produce unreliable results. This usually can be resolved by moving the shell script phase Thin Binary so that it runs before th…...
gradle-tasks.register(‘classesJar‘, Jar)解析
在使用gradle作为构建工具的android或者java web项目中,我们经常能遇到以下格式 tasks.register(classesJar, Jar) {from "$buildDir/intermediates/javac/release/classes" // 假设使用 release 构建变体 }artifact sourcesJar使用伪代码解释 class Cu…...
深度对比:Objective-C与Swift的RunTime机制与底层原理
1. RunTime简介 RunTime(运行时)是指程序在运行过程中动态管理类型、对象、方法等的机制。Objective-C 和 Swift 都拥有自己的运行时系统,但设计理念和实现方式有很大不同。理解 RunTime 的底层原理,是掌握 iOS 高级开发的关键。…...
升级Xcode16,flutter项目报错
升级xcode16后发现原来的项目运行不了了,flutter的版本是3.3.1 保错:[ 304 ms] Could not build the precompiled application for the device. [ 16 ms] Error (Xcode): linker command failed with exit code 1 (use -v to see invocation) 1、找到本地…...
MCU内存映射技术详解
MCU内存映射技术详解 1. 引言 内存映射是微控制器(MCU)系统设计中的核心概念,它决定了MCU如何访问和管理内存资源。通过内存映射,处理器可以将物理设备的地址空间映射到自己的逻辑地址空间中,实现对各种硬件资源的统一访问。本文将深入探讨…...
Mac搭建Flutter IOS环境详细指南
目录 1. 准备工作 2. 下载Flutter SDK: 2.1 配置环境 2.2 解决环境报错 zsh:command not found:flutter 2.3、再使用source命令重新加载一下:【source ~/.zshrc】,下次再编辑这个文件就可以直接执行:【open ~/.zshrc】 2.4、执行【flut…...
计算机基础—(九道题)
1. 流程控制题 编写一个程序,输入一个整数,判断它是否是素数(质数)。 如果是素数,输出Yes,否则输出No。 #include <stdio.h> int main() /* 1. 流程控制题编写一个程序,输入一个整数&…...
蓝桥杯2025年第十六届省赛真题-可分解的正整数
其实只有1不符合要求,因为-1010,作为对称结构,任何数都可以改成加法,比如4-3-2-101234,但因为最小连续的数为3,1恰好在里面,所以1不行。 #include<bits/stdc.h> using namespace std; #define int l…...
Linux虚拟机无法重启网络
这是为什么啊?试了很多种方法都还是失败。 这是本机vmware8的网络配置 这是linux虚拟机的nat配置 这是虚拟机里静态配置的网络 有没有可以答疑解惑一下的?...
8.Android(通过Manifest配置文件传递数据(meta-data))
配置文件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><applicationandroid:allowBackup"tr…...
17:00开始面试,17:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到4月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
Docker 常用命令(涵盖多个方面)
Docker 命令完整列表(表格形式) 类别 命令 描述 示例 Docker 服务管理 sudo systemctl start docker 启动 Docker 守护进程 sudo systemctl start docker sudo systemctl stop docker 停止 Docker 守护进程,需先停止所有容…...
前缀树(Trie)(字典树)
做leetcode的时候看到前缀树,听都没听过,后来才知道前缀树就是字典树。之前学过,在OJ项目中用字典树来实现黑白名单限制。浅浅复习一下吧 用字典树来实现黑白名单限制 实现步骤 (1)定义黑名单 import java.util.Arra…...
word插入APA格式的参考文献
word插入APA格式的参考文献并实现交叉引用 1. 直接手写并采用超链接 2. 使用zotero插入参考文献后采用超链接(前提下载zotero和对应的插件) 1. 直接手写 APA格式生成 1. 在需要插入参考文献的地方手写格式,如下。 2. 生成书签 名字随便填的,&#x…...
n8n部署docker本地化备份和数据持久化和迁移问题
问题总结: 在一开始的操作中,你遇到的主要问题是 Docker 容器内的文件权限导致了文件无法正确写入和修改,尤其是在复制本地备份文件到容器内时。具体问题表现为: 复制文件后,容器内文件权限错误:你使用 do…...
绘制板块层级图
目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 【实验总结】 【实验目的】 掌握数据文件读取掌握数据处理的方法实现板块层级图的绘制 【实验原理】 板块层级图(treemap)是一种基于面积的可视化方式,通过每一个板块&…...
国标云台控制状态
1.基本概念 国标联网系统的信息传输、交换、控制方面的都是通过SIP服务器负责通讯得,SIP负责信令流逐级转发。其中最重要的一部分就是和摄像机进行信令交互。 像安全注册、实时视音频点播、历史视音频的回放等应用的会话控制采用IETFRFC3261规定的Register、Invite等…...
PostgreSQL与MySQL哪个适合做时空数据分析?
PostgreSQL与MySQL的定位与区别 定位差异:功能导向与性能优先 PostgreSQL和MySQL作为两大主流开源数据库,其核心设计理念和适用场景存在显著差异。PostgreSQL定位为 对象-关系型数据库(ORDBMS) ,强调功能完备性与标准…...
uniapp利用生命周期函数实现后台常驻示例
在 Uniapp 中,利用生命周期函数实现“后台常驻”主要是通过监听应用的前后台状态变化( onHide 和 onShow ),并结合 定时器、后台任务或状态保持逻辑 来实现。但需注意: 纯前端 JS 代码无法突破系统对后台应用的限制&am…...
JAVA设计模式——(八)单例模式
JAVA设计模式——(八)单例模式 介绍理解实现饿汉式懒汉式 应用 介绍 确保一个类只存在一个实例。 理解 就是一个实例,new出来的一个,很简单。不过单例模式分为了懒汉式和饿汉式,其中也有线程安全的实现方式和线程不…...
【亚马逊云】AWS Wavelength 从理论讲解到实验演练
一、什么是 AWS Wavelength? Wavelength——一种新型的 AWS 基础设施,旨在运行需要低延迟或边缘弹性的工作负载。 AWS Wavelength 将按需计算和存储服务引入通信服务提供商网络,使客户能够构建和部署满足其数据驻留、低延迟和弹性要求的应用…...
Uniapp:vite.config.js全局配置
目录 一、基本概述二、配置自动引入插件一、基本概述 vite.config.js 是一个可选的配置文件,如果项目的根目录中存在这个文件,那么它会被自动加载,一般用于配置 vite 的编译选项 二、配置自动引入插件 在项目命令行终端中执行如下代码 npm install unplugin-auto-import…...
Springboot整合阿里云腾讯云发送短信验证码 可随时切换短信运营商
本文描述了在springboot项目中整合实现对接阿里云 和 腾讯云的短信验证码发送,可通过更改配置文件达到切换短信发送运营商(申请签名、短信模版这些本文不在叙述)。 首先看下大体结构: 一、需要导入的jar <dependency><groupId>com.…...
git 查看用户信息
在 Git 中查看用户信息是一项常见的任务,可以帮助你确认当前仓库的配置或全局的 Git 配置是否正确设置。你可以通过多种方式来查看这些信息。 查看全局用户信息 全局用户信息是应用于所有 Git 仓库的默认设置。要查看全局用户信息,可以使用以下命令&am…...
JAVA基础:Collections 工具类实战指南-从排序到线程安全
在 Java 开发中,集合类几乎贯穿每一个项目,而Collections工具类提供了一系列强大的方法,用于操作和增强集合的功能。无论是排序、查找还是线程安全的封装,Collections工具类都是提升代码效率和质量的重要工具。 一、Collections …...
【计算机视觉】TorchVision 深度解析:从核心功能到实战应用 ——PyTorch 官方计算机视觉库的全面指南
TorchVision 深度解析:从核心功能到实战应用 ——PyTorch 官方计算机视觉库的全面指南 1. TorchVision 项目概览核心模块 2. 实战案例:10 大应用场景详解案例 1:使用预训练 ResNet 进行图像分类代码实现常见问题相关论文 案例 2:加…...
case和字符串操作
使用if选择结构 if [];then elif [];then #注意这个地方,java是else if else ; fi 使用for循环结构 使用for循环,语法结构如下所示: for 变量名 in 值1 值2 值3 #值的数量决定循环任务的次数 do命令序列 done#循环输出1到10 for i in {1..10} #注…...
Golang|外观模式和具体逻辑
最终返回的是Document的切片,然后取得Bytes自己再去做反序列化拿到文档的各种详细信息。 外观模式是一种结构型设计模式,它的目的是为复杂的子系统提供一个统一的高层接口,让外部调用者(客户端)可以更简单地使用子系统…...
关于kafka
1.为什么需要消息队列 举个经典的例子。 你是一个网购达人,经常在网上购物。快递小哥到了你的小区后,立刻给你打电话说:“你的快递到了,请马上来取。” 但你是一个合格的牛马,在上班,不方便取快递&#…...
OpenCV 图形API(67)图像与通道拼接函数-----水平拼接(横向连接)两个输入矩阵(GMat 类型)函数concatHor()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于水平拼接两个 GMat 矩阵,要求输入矩阵的行数必须一致: GMat A { 1, 4,2, 5,3, 6 }; GMat B { 7, 10,8, 11,9, 12 }; GM…...