上位机图像处理和嵌入式模块部署(qmacvisual三个特色)

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

        了解了qmacvisual的配置之后,正常来说,我们需要了解下不同插件的功能是什么。不过我们不用着急,可以继续学习下qmacvisual的三个特色,分别是链接属性、功能拓展和脚本处理。了解好这三个特色,对于我们进一步的插件算法学习和部署,其实是非常有利的。

1、链接属性

        所谓的链接属性,其实和图像处理的特殊性有一定的关系。一般的图像算法,或者说图像处理流程,后面算法的输入往往是前面图像的输出。所以,从这一点来说,这对软件设计来说就非常方便、非常友好。因为,fae自己就可以编辑流程,自由选择图像的输出结果。当然,这种链接不仅仅是图像,还有可能是全局变量,这一点在前面已经提到过。

2、算法插件拓展

        我们知道,现有的图像处理算法不可能满足所有的客户场景。总有一些特殊的场景、特殊的需求,依靠现在的算法或者说插件,是没有办法满足的。所以,这个时候,qmacvisual也为我们提供了类似的机制。我们只需要按照模板去编写代码,这样就可以生成对应的dll。而且,后续dll开发的同学哪怕不知道整个软件的架构,也能根据模板,在短时间内开发出插件,满足客户的要求,这一点是非常重要的。

3、脚本编写

        之前在讲解全局变量的时候,就说过脚本处理数据的事情。整个处理流程是这样的,某一个算法或者模块拿到数据之后,再送往另外一个模块之前需要进行某种计算,或者是某种条件判断。那么这种计算,或者是条件判断,写起来可能又不是很复杂,根本没有达到插件编写的程度,所以这个时候用脚本来进行处理是比较合适的。目前来说,qmacvisual支持java script脚本,脚本的内容是这样的,

//示例1
var state = true;
if (state == true)
{
    ProjectSetGlobalValue("变量名", "值");
}

//示例2
for (var i=0;i<3;i++)
{
    LogInfo(GetCurrentTime());
}

//示例3(数组类型)
var array= ProjectGetGlobalValue("变量名");
var count = GetArraySize(array);
for (var i=0;i<count;i++)
{
    LogInfo(ConvertToArrayFloat(array, i));
}

//示例4(QPoint或cv::Point类型)
var p = ProjectGetGlobalValue("变量名");
var p_x = ConvertToPoint(p, "x");
var p_y = ConvertToPoint(p, "y");

//示例5(QPointF或cv::Point2f类型)
var p2f = ProjectGetGlobalValue("变量名");
var p2f_x = ConvertToPoint2f(p2f, "x");
var p2f_y = ConvertToPoint2f(p2f, "y");

//示例6(cv::Point3f类型)
var p3f = ProjectGetGlobalValue("变量名");
var p3f_x = ConvertToPoint3f(p3f, "x");
var p3f_y = ConvertToPoint3f(p3f, "y");
var p3f_z = ConvertToPoint3f(p3f, "z");

//示例7(cv::Point3d类型)
var p3d = ProjectGetGlobalValue("变量名");
var p3d_x = ConvertToPoint3d(p3d, "x");
var p3d_y = ConvertToPoint3d(p3d, "y");
var p3d_z = ConvertToPoint3d(p3d, "z");

//示例8(Float[]类型)
var array_float = ProjectGetGlobalValue("变量名");
var f_element = ConvertToArrayFloat(array_float, 0);  //0表示获取数组索引0位置的值

//示例9(Double[]或vector<Double>类型)
var array_double = ProjectGetGlobalValue("变量名");
var d_element = ConvertToArrayDouble(array_double, 0);  //0表示获取数组索引0位置的值

//示例10(vector<QString>类型)
var code = GetFlowToolValue("条形码识别.条形码");
var str = ConvertToArrayQString(code, 0);  //0表示获取数组索引0位置的值

//示例11(vector<cv::Point2f>类型)
var center_points = GetFlowToolValue("轮廓特征选择.重心");
var p1_x = ConvertToArrayCvPoint2f(center_points,0, "x");  //0表示获取数组索引0位置的值
var p1_y = ConvertToArrayCvPoint2f(center_points,0, "y");  //0表示获取数组索引0位置的值

//示例12(QVector<Bool>类型)
var input = GetFlowToolValue("通用I/O.输入点");
var state = ConvertToArrayBool(input, 0);  //0表示获取数组索引0位置的值

//示例13(QVector<int>类型)
var plc = GetFlowToolValue("PLC通信.寄存器读取数据");
var data = ConvertToArrayInt(plc, 0);  //0表示获取数组索引0位置的值

        其中脚本的编写窗口如下所示,一个业务流程当中也可以有多个脚本。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式事务(SeataClient)

问题场景 元数据 库存 100订单记录为空下单操作 @AutowiredRestTemplate restTemplate;/*** 下单** @return*/@Transactional // 开启事务 异常后触发数据库回滚操作@Overridepublic Order create(Order order) {// 插入订单orderMapper.insert(order);// 扣减库存 MultiValu…

Python 弱引用全解析:深入探讨对象引用机制!

目录 前言 弱引用的概述 弱引用的原理 使用 WeakRef 类创建弱引用 使用 WeakValueDictionary 类创建弱引用字典 实际应用场景 1. 解决循环引用问题 2. 对象缓存 总结 前言 在Python编程中&#xff0c;弱引用&#xff08;Weak Reference&#xff09;是一种特殊的引用方式…

折线图 温度变化曲线图

代码详情介绍 导入必要的库&#xff1a; matplotlib.pyplot&#xff1a;用于绘图。 matplotlib.font_manager&#xff1a;用于设置中文字体。 datetime&#xff1a;用于处理日期和时间。 random&#xff1a;用于生成随机数。 numpy&#xff1a;用于生成arange函数的刻度。 设置…

【kubernetes】关于k8s集群如何将pod调度到指定node节点?

目录 一、k8s的watch机制 二、scheduler的调度策略 Predicate&#xff08;预选策略&#xff09; 常见算法&#xff1a; priorities&#xff08;优选策略&#xff09;常见的算法有&#xff1a; 三、k8s的标签管理之增删改查 四、k8s的将pod调度到指定node的方法 方案一&am…

RK356X RK3588 单独编译kernel 与烧录

RK356X RK3588 单独编译kernel 与烧录 可以快速提高我们开发与调试速度 网上可查到的方法如下&#xff1a; RK3568 Android12&#xff1a; 1.添加kernel-4.19/makekernel.sh #!/bin/sh make -j24 ARCHarm64 CC../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang …

EasyRecovery易恢复2024免激活安装包下载

EasyRecovery易恢复是一款功能强大的数据恢复软件。这款软件由全球著名数据厂商Kroll Ontrack出品&#xff0c;可以恢复被删除的文件、文件夹&#xff0c;以及被格式化的磁盘等数据。无论是硬盘、U盘、SD卡还是其他移动设备&#xff0c;EasyRecovery易恢复都能通过其专业的数据…

全连接神经网络算法原理(激活函数、前向传播、梯度下降法、损失函数、反向传播)

文章目录 前言1、全连接神经网络的整体结构&#xff1a;全连接神经网络模型是由输入层、隐藏层、输出层所组成&#xff0c;全连接神经网络结构如下图所示&#xff1a;全连接神经网络的每一层都是由一个一个的神经元所组成的&#xff0c;因此只要搞清楚神经元的本质就可以搞清楚…

MetaQTL:元分析基础教程

MetaQTL 基础知识 在遥远的海洋中&#xff0c;每个岛屿都藏着无尽的宝藏&#xff0c;而探险家们争相寻找地图&#xff0c;以期揭开宝藏的秘密。 现实世界中&#xff0c;我们的基因组就像那片广阔的海洋&#xff0c;而隐藏在其中的宝藏就是控制我们身高、健康、甚至是我们性格的…

MM配置2-给公司代码分配工厂

配置步骤&#xff0c;如下图&#xff1a;在弹出的对话框中将工厂分配给相应的公司代码 保存完成

UDP通信发送和接收 || UDP实现全双工通信

recvfrom ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); 功能: 从套接字中接收数据 参数: sockfd:套接字文件描述符 buf:存放数据空间首地址 …

java的运算符

整形和浮点型相比&#xff0c;浮点型的范围更大&#xff0c;所以在Java中正常条件下都是整形隐式转换为浮点型(任意整形都可以隐式转换为double或者float)&#xff0c;浮点型不能隐式转换为整形。 1.算术运算符 1. 基本四则运算符&#xff1a;加减乘除模( - * / %) 加减乘都…

mfc110u.dll丢失的解决方法,5招搞定mfc110u.dll丢失问题

mfc110u.dll是一个动态链接库文件&#xff0c;它是Microsoft Foundation Class&#xff08;MFC&#xff09;库的一部分。MFC是微软公司为Visual C开发人员提供的一个类库&#xff0c;用于简化Windows应用程序的开发过程。mfc110u.dll文件包含了MFC库中的一些功能和类&#xff0…

口碑营销:品牌如何维护良好口碑?

企业的品牌传播最有效的方式莫过用户的口碑&#xff0c;互联网的发展为企业的品牌传播引入了驱动力&#xff0c;愈来愈多的企业花费更多的资源开展网络口碑的建设和维护&#xff0c;那么企业如何维护好网络口碑&#xff1f; 1、持续传递优质的品牌内容 内容是营销推广的支撑点&…

MySQL进阶之(四)InnoDB数据存储结构之行格式

四、InnoDB数据存储结构之行格式 4.1 行格式的语法4.2 COMPACT 行格式4.2.1 记录的额外信息01、变长字段长度列表02、NULL 值列表03、记录头信息 4.2.2 记录的真实数据 4.3 Dynamic 和 Compressed 行格式4.3.1 字段的长度限制4.3.2 行溢出4.3.3 Dynamic 和 Compressed 行格式 4…

贪心 Leetcode 968 监控二叉树

监控二叉树 Leetcode 968 学习记录自代码随想录 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 要点&#xff1a;1.想到优先覆盖叶子节点&#xff0c…

数字孪生10个技术栈:数据采集的八种方式

大家好&#xff0c;我是贝格前端工场&#xff0c;上期讲了数字孪生10个技术栈&#xff08;总括&#xff09;:概念扫盲和总体介绍&#xff0c;获得了大家的热捧&#xff0c;本期继续分享技术栈&#xff0c;大家如有数字孪生或者数据可视化的需求&#xff0c;可以联络我们。 一、…

企业内部培训考试系统在线考试都用到了哪些防作弊技术?

企业内部培训考试系统在线考试功能采用了多种技术手段来防止作弊行为&#xff0c;确保考试的公平性和有效性&#xff0c;具体如下&#xff1a; 1. 人脸识别验证&#xff1a;在考试开始前&#xff0c;考生需要进行人脸识别核验。系统会根据考生的姓名和身份证号实时采集人脸与公…

AI革命:如何用会话式AI制作爆款短视频

智能制作&#xff1a;会话式AI让短视频内容更上一层楼 随着社交媒体的广泛普及与飞速发展&#xff0c;短视频已成为人们日常生活中不可分割的一环。以其内容简洁、形式多样、易于消费的特性&#xff0c;短视频深受广大用户的青睐。因此&#xff0c;积极投入短视频的制作&#x…

STM32/GD32——I2C通信协议

芯片选型 Ciga Device — GD32F470系列 通讯规则 I2C协议&#xff08;或称IIC&#xff09;是由飞利浦&#xff08;现在的恩智浦半导体&#xff09;公司开发的一种通用的总线协议。它使用两根线&#xff08;时钟线和数据线&#xff09;来传输数据&#xff0c;支持多个设备共享…

C++_布隆过滤器

目录 1、布隆过滤器的用法 2、布隆过滤器的查找 3、布隆过滤器的删除 4、布隆过滤器的实现 结语 前言&#xff1a; 布隆过滤器是一种概率型数据结构&#xff0c;采用的是哈希思想&#xff0c;他在位图的原有基础上做了升级&#xff0c;因为位图处理不了数据为字符串的情…