上位机图像处理和嵌入式模块部署(qmacvisual之n点标定)

2024-04-03 07:28

本文主要是介绍上位机图像处理和嵌入式模块部署(qmacvisual之n点标定),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

        工业场景中,很多时候图像是用来做测量的。虽然我们很希望载台是平的,摄像头是正对着拍摄物体的,但是运行时间长了总会出现各种各样的偏差,尤其是有电机振动的时候。那么这种情况下,就需要重新进行标定了。标定的方法和之前的畸变矫正一样,就是找一个标准的斑点治具,上面各个斑点之间的高度和宽度,都是可以转成对应的世界坐标。利用这个标准的器件,以及拍摄到的图像,就可以计算得到一个新的透视矩阵,这样对于其他获取到的像素点,就可以找到对应的世界坐标了。

1、创建项目和创建流程

        首先还是需要创建项目、创建流程,这是使用qmacvisual软件很重要的一步。

2、导入图像

        导入的图像一般就是拍摄到的斑点图。可以一次处理一个,也可以一次处理多个。导入的方法,就是利用【获取图像】插件来完成。

3、N点标定

        N点标定的插件的位置,位于【标定工具】下面。直接把它用鼠标拖到流程窗口即可。N点标定的基本做法就是,依次1-》9标定好各个圆点的中心位置,接着将这些数值和实际坐标放到一个表格里面,这样就可以获得一个透视计算矩阵,这是我们希望得到的最终结果。

        这里我们完成的主要是九点标定。有两个地方需要配置,第一个就是输入的图像,第二个是熟练掌握找圆工具。标定的顺序是按照如上图所示的顺序依次进行的,即从中心点开始,逆时针完成。

        找圆的话,这部分我们之前也提到过。一般也是两个步骤。第一部分,添加一个ROI对象,第二部分,对参数进行设置。这两部分都ok之后,单击获取圆心按钮,就可以在图像上看到效果,同时在左下角会输出一个圆心坐标,也就是圆心的像素坐标,这个数值记录下来。做好了这一个圆点之后,继续完成其他2、3、4、5、6、7、8、9点,记录他们的像素坐标。

        完成这些像素坐标之后,就可以开始标定设置了。所谓的标定设置,就是把像素坐标和世界坐标放在一起供后面的计算使用。注意,这里需要选择九点标定参数。最后,单击执行按钮,就可以在输出显示tab中获得我们想要的结果。

        如图所示,整个输出包含了透视矩阵中的参数(A/B/C/D/E/F)、x方向单像素的宽度、y方向单像素的宽度、基准点的世界坐标、基准点的物理坐标。

4、后续像素坐标转世界坐标

        有了上面的输出之后,实际上我们就可以通过这个透视矩阵计算像素坐标、世界坐标之间的映射关系了。这部分,其实【对位关系】里面的【线性计算】说的也是这个,但不知道什么原因,使用的时候一直报错。现在我们把对应的转换公式放在这里,有需求的同学可以直接用这个公式进行计算。比如,我们完全可以通过script进行计算,这也是非常合适的。

tPoint.x = static_cast<float>(A * pPoint.x + B * pPoint.y + C);
tPoint.y = static_cast<float>(D * pPoint.x + E * pPoint.y + F);

        其中pPoint代表了像素坐标,tPoint代表了世界坐标。

这篇关于上位机图像处理和嵌入式模块部署(qmacvisual之n点标定)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872270

相关文章

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp