上位机图像处理和嵌入式模块部署(qmacvisual自己编写算法插件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面我们说过,qmacvisual本身支持52个控件,但是指望这52个控件可以cover所有的应用场景,这也不太现实。另外,后续随着技术的发展,肯定还会有一些新的算法被提出来,所以上位机一定要提供一种算法扩展的机制,这样才能方便后面项目的实施。

        一开始的时候,我以为直接按照之前52种控件编写的方法,去模仿和参考别人的代码就可以了。后来通过代码阅读才发现,作者提供了一种套娃的方式来实现的。可能不这样做的话,直接按照那52种控件修改和展示,需要修改很多地方的代码,比较容易出错。所以他这边的处理方法就是先拖入一个控件的容器,然后在这个容器里面配置好我们写的控件。

1、容器控件

        容器控件的位置位于【逻辑工具】-》【扩展库】当中。如果需要使用的话,肯定和之前一样,先创建项目,再创建流程。这一切都ok之后,就可以把容器控件拖过来。单击之后,不出意外的话,窗口的界面是这样的,

2、容器控件分析

        如上图所示,整个控件有两个部分。一个是输入图像,也就是需要处理的图像从哪里进行输入;还有一个是动态库的存储路径,也就是后续我们需要自己编写的插件。容器控件是qmacvisual自带的,不需要我们写代码。

3、自己编写插件

        关于自己编写的插件,qmacvisual给出了一个模板,生成的dll文件就是上面截图种看到的ExtLibraryCase.dll。大家如果需要自己开发的话,直接看这个template模板就可以了。不想做特别大的修改,可以直接把它改个工程的名字,换一下核心部分的算法就行了。插件的结果输出也是一幅图像。还有,如果想看ExtLibraryCase.dll的界面效果,直接单击上面窗口中的设置按钮即可。不出意外,应该就可以看到这样的窗口,

4、插件内容分析

        和其他插件相比较,这个ExtLibraryCase.dll显示部分还是比较空的。大家可以根据需要,在窗口里面添加对应的小控件就可以了。需要显示效果,直接把输出图像显示在后侧的windows里面就行。当然仔细分析一下,作者之所以大费周章,采用了这种套娃的方法来实现插件的功能,大概是希望用户不要修改原来代码的内容因为每个人的开发能力是有差异。不然的话,很容易出现这种情况,那就是软件改着改着就改出毛病来了。

5、实现方法

        这种动态插件加载的方法,不管是windows平台,还是linux平台,原理都是一样的。不同的插件,自身都包含了相同的函数入口,直接加载对应函数入口就可以了。在widnows平台上面,加载函数叫LoadLibraryA;在linux平台,称之为dlopen。有兴趣的同学可以通过搜索引擎或者是chatgpt,去好好看一下对应的功能是怎么实现的。

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

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

相关文章

自定义方法SQL注入器-DefaultSqlInjector

/*** 自定义Sql注入* author zy*/ public class SqlInjector extends DefaultSqlInjector {Overridepublic List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {// 注意&#xff1a;此SQL注入器继承了DefaultSqlInjector(默认注入器…

2024 年排名前 5 名的 Mac 数据恢复软件分享

如果您已经在 Mac 上丢失了数据并且正在寻找恢复数据的方法&#xff0c;那么您来对地方了。互联网上有超过 50 个适用于 Mac 的数据恢复程序。哪个是最好的 Mac 数据恢复软件&#xff1f;不用担心。本文列出了 5 款 Mac 数据恢复软件&#xff0c;可帮助您在 Mac OS 下恢复丢失的…

【JavaScript 漫游】【036】CORS 通信总结

文章简介 CORS 是一个 W3C 标准&#xff0c;全称是“跨域资源共享”&#xff08;Cross-origin resource sharing&#xff09;。它允许浏览器向跨域的服务器&#xff0c;发出 XMLHttpRequest 请求&#xff0c;从而克服了 AJAX 只能同源使用的限制。 本篇文章为【JavaScript 漫…

N折交叉验证的作用

重点放在前面&#xff1a; N折交叉验证有两个用途&#xff1a;模型评估、模型选择。N折交叉只是一种划分数据集的策略。想知道它的优势&#xff0c;可以拿它和传统划分数据集的方式进行比较。它可以避免固定划分数据集的局限性、特殊性&#xff0c;这个优势在小规模数据集上更…

高频:spring知识

1、bean的生命周期&#xff1f; 主要阶段 初始化 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext67424e82: startup date []; root of context hi…

数据结构:7、队列

一、队列的概念与结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾 出队列&#xff1a;进行删除操作的一端称为队头…

漫途桥梁结构安全监测方案,护航桥梁安全!

桥梁作为城市生命线的重要组成部分&#xff0c;承载着城市交通、物流输送、应急救援等重要职能。然而&#xff0c;随着我国社会经济的飞速发展&#xff0c;桥梁所承载的交通流量逐年增长&#xff0c;其安全性所面临的挑战亦日益严峻。例如恶劣的外部环境、沉重的荷载以及长期使…

memmove函数及其模拟实现

一、用法 memmove用于拷贝字节&#xff0c;如果目标区域和源区域有重叠的话&#xff0c;memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中&#xff0c;但复制后源内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。 二、原型&#xff1a…

Linux下安装Android Studio及创建桌面快捷方式

下载 官网地址&#xff1a;https://developer.android.com/studio?hlzh-cn点击下载最新版本即可 安装 将下载完成后文件&#xff0c;进行解压&#xff0c;然后进入android-studio-2023.2.1.23-linux/android-studio/bin目录下&#xff0c;启动studio.sh即可为了更加方便的使…

MySQL学习Day32——数据库备份与恢复

在任何数据库环境中&#xff0c;总会有不确定的意外情况发生&#xff0c;比如例外的停电、计算机系统中的各种软硬件故障、人为破坏、管理员误操作等是不可避免的&#xff0c;这些情况可能会导致数据的丢失、 服务器瘫痪等严重的后果。存在多个服务器时&#xff0c;会出现主从服…

Codeforces Round 825 D. Equal Binary Subsequences 【思维】

D. Equal Binary Subsequences 题意 给定一个长度为 2 n 2n 2n 的 01 01 01 字符串 s s s&#xff0c;现在需要恰好使用一次下面的操作&#xff0c;将其划分为相等的两个子序列 定义操作&#xff1a; 选择某些下标&#xff0c;并这些下标代表的子序列向右循环移动一位 如…

SSA-LSTM多输入分类预测 | 樽海鞘优化算法-长短期神经网络 | Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

图像处理与图像分析—图像统计特性的计算(纯C语言实现灰度值显示)

根据输入的灰度图像&#xff0c;分别计算图像的均值、方差等统计特征&#xff0c;并计算图像的直方图特征并以图形方式显示图像的直方图&#xff08;用C或C语言实现&#xff09;。 学习将会依据教材图像处理与图像分析基础&#xff08;C/C&#xff09;版内容展开 在上个笔记中&…

C语言排序算法

int main() { int i; int arr[]{49,38,65,97,76,13,27,49}; int nsizeof(arr)/sizeof(arr[0]); //数据开始的排列 for(i0;i<n;i) { printf("%d ",arr[i]); } printf("\n"); //排序后 InsertSort(arr,n…

机器学习-0X-神经网络

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中神经网络算法。 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程化接口实现 参考 机器学习定义 关于机…

GEE错误——Layer 2: Tile error: Reprojection output too large (10277x10480 pixels).

错误 Layer 2: Tile error: Reprojection output too large (10277x10480 pixels). Layer 2: Tile error: Reprojection output too large (10150x10479 pixels). Output of image computation is too large (18 bands for 3150625 pixels = 240.4 MiB > 80.0 MiB). 如果我…

Oracle P6 负浮时和必须完成日期

前言 学习过计划的人大都有这有这样的经历&#xff0c;即无论是Microsoft Project 亦或是P6见过负浮时那么 Primavera P6 计划中的负浮时是从何而来的呢&#xff0c;那么本文可能会有所帮助。 首先&#xff0c;当活动的最晚日期早于最早日期时&#xff0c;就会出现负浮时。 换…

Linux动态追踪——ftrace

目录 摘要 1 初识 1.1 tracefs 1.2 文件描述 2 函数跟踪 2.1 函数的调用栈 2.2 函数调用栈 2.3 函数的子调用 3 事件跟踪 4 简化命令行工具 5 总结 摘要 Linux下有多种动态追踪的机制&#xff0c;常用的有 ftrace、perf、eBPF 等&#xff0c;每种机制适应于不同的场…

uniapp h5 部署

uniapp 配置 服务器文件路径 打包文件结构 //nginx 配置 server {listen 8300;server_name bfqcwebsiteapp;charset utf-8;#允许跨域请求的域&#xff0c;* 代表所有add_header Access-Control-Allow-Origin *;#允许带上cookie请求add_header Access-Control-Allow-C…

docker harbor.v2.9.2搭建镜像无法下载问题解决

在通过部署docker harbor时&#xff0c;采用的是离线包的方式&#xff0c;当解压压缩包后&#xff0c;执行prepare脚本步骤中有一步是要获取prepare:v2.9.2版本镜像 结果执行脚本时报如下错误&#xff1a; Unable to find image goharbor/prepare:v2.9.2 locally 这时候我们就…