当前位置: 首页 > news >正文

openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素

文章目录

    • openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素
    • 概述
    • 笔记
      • 设置后的顶部相机效果
      • 设置后的底部相机效果
    • 备注
    • END

openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素

概述

用自己编译的基于openpnp-dev-2024-0208版本,在标定设备。
在这里插入图片描述
顶部相机Z轴径向线的数量为默认的32
底部相机Z轴径向线的数量改为40(默认的32校正失败)
在这里插入图片描述
校正完成后,默认的顶部相机和底部相机的图像都变成了鱼眼形状,如果不放大,看不清图像。
在这里插入图片描述
对于顶部相机,放大到最大倍数,一般可以看清楚图像是啥,但是也没有顶部相机高级校正前看的清楚。
在这里插入图片描述
如果芯片管脚贴歪了,在顶部相机高级校正后,根本看不清。

对于底部相机高级校正,放大到最大倍数,能勉强辨认。但是和底部相机高级校正前的图像效果那是差了好远。
但是这次标定完,即使底部相机放大到最大的图像,看到的图像也无法分辨。
既然人眼无法分辨,那么openpnp用于视觉识别的图像也是如此,导致底部相机高级校正后,视觉归位中的吸嘴校验失败(因为根本就分辨不出是个吸嘴,只能看到是个绿色的大圆点,且这个大圆点还不怎么圆…).
在这里插入图片描述

以前遇到这种情况,做过一个笔记(openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法)。

当时就是为了解决在底部相机高级校正之后,底部相机看不清图像的问题。

但是我顶部相机有需求要看清啊(贴片之后,贴的效果如何,我要去人工抽检啊),不能因为做了相机(底部相机/底部相机)高级校正,相机的图像就看不清了,这有点违反了高级校正的本意了。

前段时间,遇到顶部相机看不清元件是否贴歪的场景,还临时去将高级校正应用先关掉,观察完,再应用高级校正。感觉这个临时措施不科学。看个东西,就要去开关高级校正应用的开关,这谁受的了啊。

得解决这个贴片的应用问题啊。

笔记

试了一下,在顶部相机/底部相机高级校正后,将顶部相机/底部相机的"裁剪所有无效像素"值都设置为0,就可以达到和顶部相机/底部相机高级校正前一样的效果。这感觉是正道啊。

将顶部相机/底部相机的"裁剪所有无效像素"值都设置为0,并不会影响已经通过的高级校正参数的纠偏应用。
只是将"无效像素都裁剪掉",看到的效果就是相机高级校正之前的效果。
但是在相机高级校正后,已经将设备机械安装的倾斜都纠正了(人工安装的零件,谁能保证安装的绝对垂直呢?)。反正做相机高级校正,好处多多。

设置后的顶部相机效果

在这里插入图片描述
只放大到关心元件的区域效果
在这里插入图片描述
放大到最大的效果
最大的图像,就是摄像头能看到的图像区域。
在这里插入图片描述

设置后的底部相机效果

在这里插入图片描述
只放大到关心元件的区域效果
在这里插入图片描述
放大到最大的效果
最大的图像,就是摄像头能看到的图像区域。
在这里插入图片描述

备注

将顶部相机/底部相机的"裁剪所有无效像素"值都设置为0,心里舒服多了。
这个问题困扰我好久,以至于我怀疑openpnp有bug 😛, 曾经一度不信任最新的openpnp发行版,还特意用了一段时间的openpnp-dev-2022-0801的版本。

现在我就有勇气用openpnp2.0的任何版本了, 不是软件有bug, 是小白不会用.
如果有时间,我也有勇气去尝试用openpnp的测试版,只不过,测试版有时会导致.openpnp2的配置文件不兼容。

这么长时间的openpnp使用体验后,终于知道,openpnp软件是没bug的(站在openpnp的使用者的角度看)。

END

相关文章:

openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素

文章目录 openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素概述笔记设置后的顶部相机效果设置后的底部相机效果 备注END openpnp - 在顶部相机/底部相机高级校正完成后,需要设置裁剪所有无效像素 概述 用自己编译的基于openpnp-…...

Vue+TypeScript+SpringBoot的WebSocket基础教学

成品图: 对WebSocket的理解(在使用之前建议先了解Tcp,三次握手,四次挥手 ): 首先页面与WebSocket建立连接、向WebSocket发送信息、后端WebSocket向所有连接上WebSoket的客户端发送当前信息。 推荐浏览网站…...

大话网络协议:HTTPS协议和HTTP协议有何不同?为什么HTTPS更安全

大家现在访问网络,浏览网页,注意一下的话,网址前面基本上都是一个 https:// 的前缀,这里就是说明这个网址所采用的协议是 https 协议。那么具体应该怎么理解 https 呢? 本文我们就力争能清楚地解释明白这个我们目前应该最广的协议。 理解HTTP协议 要解释 https 协议,当…...

13图书归还-云图书管理系统(Vue3+Spring Boot+element plus)

目录 1 接口地址2 后台代码RecordControllerBookController 3 view/books/BookRecordsVue中前端框架搭建4 api/record.js文件写查询用户借阅记录的接口代码5 api/book.js中写归还图书、查询当前借阅图书接口代码6 BookRecordsVue中导入接口函数,并调用7 运行效果 1 …...

中航资本:“女人的茅台”重挫!超7700亿元英伟达概念业绩爆发

今天早盘首要指数强势震动,申万一级工作指数跌多涨少,通讯指数涨逾1%居首。概念方面,存储器、动保、重组等概念板块涨幅居前。存储概念大涨首要仍是AI方向又有好消息,市值逾越7700亿元的英伟达概念龙头SK海力士发布效果超预期财报…...

day7:软件包管理

一,软件包概述 软件包概述 软件包用于安装,升级,卸载一个软件 软件包类型 二进制包 源码经过了编译(而且成功了)后产生的包,二进制包是linux下默认的安装包 编译好的文件,直接使用&#xff…...

探索Konko AI:快速集成大语言模型的最佳实践

探索Konko AI:快速集成大语言模型的最佳实践 引言 随着大语言模型(LLM)的普及,如何快速方便地集成这些模型成为众多开发者关注的焦点。Konko AI 提供了一个全面管理的 API,使开发者能够选择合适的开源或专有大语言模…...

网络地址和本地网络地址

本地网络地址(Local Network Address,简称 LNA)是指在一个子网内用于标识特定主机的部分。在 IPv4 地址中,一个完整的 IP 地址由两部分组成:网络地址部分(Network Address)和本地网络地址部分&a…...

【closerAI ComfyUI】AI绘画界新技术RF Inversion图像编辑和风格迁移!能跟ipadapter争高低吗?

AI绘画界新技术RF Inversion图像编辑和风格迁移!能跟ipadapter争高低吗? 在人工智能绘画领域,技术的创新永不止步。closerAI ComfyUI最近推出了一项名为RF Inversion的新技术,它能够进行图像编辑和风格迁移,为艺术家和…...

【Spring篇】Spring的Aop详解

🧸安清h:个人主页 🎥个人专栏:【计算机网络】【Mybatis篇】【Spring篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯初始Sprig AOP及…...

Spring与其他框架的比较

Spring 框架因其丰富的功能和灵活性,在 Java 领域内得到了广泛应用。然而,在不同的应用场景下,开发者可能会选择其他框架。下面将 Spring 框架与其他一些常见的 Java 框架进行比较,以便更好地理解它们各自的优缺点和适用场景。 1…...

论当前的云计算

随着技术的不断进步和数字化转型的加速,云计算已经成为当今信息技术领域的重要支柱。本文将探讨当前云计算的发展现状、市场趋势、技术革新以及面临的挑战与机遇。 云计算的发展现状 云计算,作为一种通过网络提供可伸缩的、按需分配的计算资源服务模式&a…...

Spring Boot 整合 RocketMQ 之消息消费手动提交 ACK 实战【案例分享】

前言: 上一篇我们分享了 RocketMQ 消息重试的一些基本原理,本篇我们基于 Spring Boot 整合 RocketMQ 来分享一下 RocketMQ 消息基于手动提交的案例,在分享手动进行消息 ACK 中也会分享消息重试的使用。 RocketMQ 系列文章传送门 RocketMQ …...

胃癌数据集(不定期更新)

恶性肿瘤其实就是癌症的一种,它是由一些不正常的细胞组成的,这些细胞会不停地生长和繁殖,而且它们还会侵犯周围的正常组织,甚至通过血液和淋巴系统跑到身体其他部位去。 恶性肿瘤有以下几个特点: 1、无限制生长&…...

zh/FAQ/CentOSStream-CentOS Stream 常见问题

CentOS Stream 是什么? CentOS Stream 是一个为开发者而设的发行版本,目的是要协助社群中的成员、Red Hat 伙伴及其它人在一个较稳定及可预测的 Linux 生态环境下充分利用创新的开源程序。 它的内容正是 Red Hat 有意收录于下个稳定版 RHEL 的软件。任何…...

多台西门子PLC与多台三菱PLC之间实时通讯的方案(PLC内不用编程)

PLC通讯智能网关IGT-DSER模块支持西门子、三菱、欧姆龙、罗克韦尔AB、GE等各种品牌的PLC之间通讯,同时也支持PLC与Modbus协议的变频器、智能仪表等设备通讯。网关有多个网口、串口,也可选择WIFI无线通讯。PLC内无需编程开发,在智能网关上配置…...

C++ [项目] 恶魔轮盘赌

现在才发现C游戏的支持率这么高,那就发几篇吧 零、前情提要 此篇是我与 同学的共创,他负责写人,我负责写机,简称人机, 不过有一点小插曲…… 一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有…...

微信小程序版本更新管理——实现自动更新

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

Python使用Selenium库实现CSDN自动化发帖

虽然CSDN上有很多优秀的作品,但也不乏很多很水的文章,我也不知道这种有什么意义。不过发这么水的文章多没意思,让浏览器自动化发帖就行了。以下程序能够实现CSDN自动化发帖,同时附自动给关注的人的文章点赞的程序。因为也有很多作…...

StringBulider和StringBuffer的底层源码剖析

要深入了解 StringBuffer 和 StringBuilder 的区别,从底层源码的角度来解析,包括它们的创建、扩容机制等,可以参考 JDK 1.8 的源码。 1. AbstractStringBuilder 类 StringBuffer 和 StringBuilder 都继承自 AbstractStringBuilder。…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...