openpnp - 单独用CvPipeLineEditor来调试学习图片识别参数

news2024/11/24 20:49:01

文章目录

    • openpnp - 单独用CvPipeLineEditor来调试学习图片识别参数
    • 概述
    • 笔记
    • 官方给出的单独启动CvPipeLineEditor的方法
    • 我自己环境单独启动CvPipeLineEditor的方法
    • CvPipeLineEditor启动后的样子
    • 添加命令的方法
    • 删除不要的命令参数
    • 调整多个命令参数的执行顺序
    • 添加命令用来载入实验用的.png
    • 识别吸嘴内壁
    • 调试openpnp无法正确识别的吸嘴内壁或者其他视觉识别参数
    • 备注
    • END

openpnp - 单独用CvPipeLineEditor来调试学习图片识别参数

概述

在使用openpnp的过程中,可能由于某些原因(e.g. 光线变化大),使标定设备时好使的吸嘴,在自动归零后,自动校验吸嘴同心度时失败。
这时,不用重新去标定设备,吸嘴也是同一批型号,同心度一致性差不多,设备刚标定完后,还可以自动归零,吸嘴校验成功。
现在只过了一会,只是openpnp软件关了,再重新开,自动归零时,出现吸嘴校验失败。
所以这种情况下的吸嘴自动校验失败,只和吸嘴的图像识别参数有关。

因为就想实验调整哪些参数影响吸嘴内壁图像的识别,如果开着设备,有点没必要。是否有离线实验的方法?
翻看官方资料, 看到可以单独启动CvPipelineEditor来实验图像参数的识别。

试了一下,好使。
那这样的话,就可以将吸嘴校验失败时的图像抓下来,保存到本地为.png图像。
然后将设备关了,安心的用单独启动的CvPipelineEditor来实验如何才能正确识别图像中的吸嘴内壁。

笔记

官方给出的单独启动CvPipeLineEditor的方法

java -cp openpnp-gui-0.0.1-alpha-SNAPSHOT.jar org.openpnp.vision.pipeline.ui.StandaloneEditor

我自己环境单独启动CvPipeLineEditor的方法

我现在用的是我自己编译的openpnp版本, 启动的命令行写了笔记(openpnp - 程序发布包的制作)

我只需要在这个笔记的基础上,将要启动的class改为 org.openpnp.vision.pipeline.ui.StandaloneEditor 即可。
完整的启动命令另存为run_cvPipeLine.cmd,内容如下

.\jdk11.0.17_8\bin\java.exe  -Dfile.encoding=UTF-8 -classpath .\classes;.\m2_repository\net\java\dev\jna\jna\5.8.0\jna-5.8.0.jar;.\m2_repository\org\jfree\jfreechart\1.5.3\jfreechart-1.5.3.jar;.\m2_repository\com\github\sarxos\webcam-capture\0.3.10\webcam-capture-0.3.10.jar;.\m2_repository\com\nativelibs4java\bridj\0.6.2\bridj-0.6.2.jar;.\m2_repository\org\slf4j\slf4j-api\1.7.2\slf4j-api-1.7.2.jar;.\m2_repository\org\ostermiller\utils\1.07.00\utils-1.07.00.jar;.\m2_repository\commons-codec\commons-codec\1.6\commons-codec-1.6.jar;.\m2_repository\org\simpleframework\simple-xml\2.7.1\simple-xml-2.7.1.jar;.\m2_repository\stax\stax-api\1.0.1\stax-api-1.0.1.jar;.\m2_repository\stax\stax\1.2.0\stax-1.2.0.jar;.\m2_repository\xpp3\xpp3\1.1.3.3\xpp3-1.1.3.3.jar;.\m2_repository\commons-io\commons-io\2.7\commons-io-2.7.jar;.\m2_repository\com\fazecast\jSerialComm\2.10.3\jSerialComm-2.10.3.jar;.\m2_repository\org\swinglabs\swingx\swingx-all\1.6.4\swingx-all-1.6.4.jar;.\m2_repository\org\openpnp\opencv\4.5.1-2\opencv-4.5.1-2.jar;.\m2_repository\com\google\code\gson\gson\2.2.3\gson-2.2.3.jar;.\m2_repository\org\apache\xmlgraphics\batik-transcoder\1.7\batik-transcoder-1.7.jar;.\m2_repository\org\apache\xmlgraphics\fop\0.94\fop-0.94.jar;.\m2_repository\org\apache\xmlgraphics\xmlgraphics-commons\1.2\xmlgraphics-commons-1.2.jar;.\m2_repository\org\apache\avalon\framework\avalon-framework-api\4.3.1\avalon-framework-api-4.3.1.jar;.\m2_repository\org\apache\avalon\framework\avalon-framework-impl\4.3.1\avalon-framework-impl-4.3.1.jar;.\m2_repository\org\apache\xmlgraphics\batik-awt-util\1.7\batik-awt-util-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-bridge\1.7\batik-bridge-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-anim\1.7\batik-anim-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-css\1.7\batik-css-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-ext\1.7\batik-ext-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-parser\1.7\batik-parser-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-script\1.7\batik-script-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-js\1.7\batik-js-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-dom\1.7\batik-dom-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-gvt\1.7\batik-gvt-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-svg-dom\1.7\batik-svg-dom-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-svggen\1.7\batik-svggen-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-util\1.7\batik-util-1.7.jar;.\m2_repository\org\apache\xmlgraphics\batik-xml\1.7\batik-xml-1.7.jar;.\m2_repository\xml-apis\xml-apis\1.3.04\xml-apis-1.3.04.jar;.\m2_repository\xml-apis\xml-apis-ext\1.3.04\xml-apis-ext-1.3.04.jar;.\m2_repository\com\google\zxing\javase\2.2\javase-2.2.jar;.\m2_repository\com\google\guava\guava\14.0.1\guava-14.0.1.jar;.\m2_repository\com\jgoodies\jgoodies-forms\1.8.0\jgoodies-forms-1.8.0.jar;.\m2_repository\com\jgoodies\jgoodies-common\1.8.0\jgoodies-common-1.8.0.jar;.\m2_repository\org\tros\l2fprod-properties-editor\1.0.3\l2fprod-properties-editor-1.0.3.jar;.\m2_repository\org\tros\l2fprod-common-annotations\1.0.3\l2fprod-common-annotations-1.0.3.jar;.\m2_repository\xalan\xalan\2.7.2\xalan-2.7.2.jar;.\m2_repository\xalan\serializer\2.7.2\serializer-2.7.2.jar;.\m2_repository\de\onvif\onvif-java-lib\2016-03-16\onvif-java-lib-2016-03-16.jar;.\m2_repository\org\python\jython-standalone\2.7.1\jython-standalone-2.7.1.jar;.\m2_repository\org\beanshell\bsh\2.0b5\bsh-2.0b5.jar;.\m2_repository\org\tinylog\tinylog\1.3\tinylog-1.3.jar;.\m2_repository\com\google\zxing\core\3.3.0\core-3.3.0.jar;.\m2_repository\com\github\kennedyoliveira\pastebin4j\1.2.1\pastebin4j-1.2.1.jar;.\m2_repository\com\mashape\unirest\unirest-java\1.4.9\unirest-java-1.4.9.jar;.\m2_repository\org\apache\httpcomponents\httpclient\4.5.2\httpclient-4.5.2.jar;.\m2_repository\org\apache\httpcomponents\httpcore\4.4.4\httpcore-4.4.4.jar;.\m2_repository\org\apache\httpcomponents\httpasyncclient\4.1.1\httpasyncclient-4.1.1.jar;.\m2_repository\org\apache\httpcomponents\httpcore-nio\4.4.4\httpcore-nio-4.4.4.jar;.\m2_repository\org\apache\httpcomponents\httpmime\4.5.2\httpmime-4.5.2.jar;.\m2_repository\org\json\json\20160212\json-20160212.jar;.\m2_repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;.\m2_repository\org\jdesktop\beansbinding\1.2.1\beansbinding-1.2.1.jar;.\m2_repository\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar;.\m2_repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;.\m2_repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;.\m2_repository\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;.\m2_repository\org\openpnp\openpnp-capture-java\0.0.22\openpnp-capture-java-0.0.22.jar;.\m2_repository\com\nativelibs4java\jnaerator-runtime\0.12\jnaerator-runtime-0.12.jar;.\m2_repository\com\nativelibs4java\ochafik-util\0.12\ochafik-util-0.12.jar;.\m2_repository\javax\xml\bind\jaxb-api\2.2.11\jaxb-api-2.2.11.jar;.\m2_repository\com\sun\xml\bind\jaxb-core\2.2.11\jaxb-core-2.2.11.jar;.\m2_repository\com\sun\xml\bind\jaxb-impl\2.2.11\jaxb-impl-2.2.11.jar;.\m2_repository\javax\activation\activation\1.1.1\activation-1.1.1.jar;.\m2_repository\javax\xml\ws\jaxws-api\2.3.0\jaxws-api-2.3.0.jar;.\m2_repository\javax\xml\soap\javax.xml.soap-api\1.4.0\javax.xml.soap-api-1.4.0.jar;.\m2_repository\com\formdev\flatlaf\1.0\flatlaf-1.0.jar;.\m2_repository\com\formdev\flatlaf-extras\1.0\flatlaf-extras-1.0.jar;.\m2_repository\com\formdev\svgSalamander\1.1.2.4\svgSalamander-1.1.2.4.jar org.openpnp.vision.pipeline.ui.StandaloneEditor

CvPipeLineEditor启动后的样子

在这里插入图片描述

添加命令的方法

在这里插入图片描述
在这里插入图片描述
选中一个命令,点击接受,命令参数就添加到了CvPipeLineEditor
在这里插入图片描述
每个opencv命令参数都有可以选择的命令参数,自己可以改。
如果这个opencv命令是影响图像的,在右边的图像预览中,就可以看到效果。

删除不要的命令参数

选中要删除的命令,点击删除按钮,这个命令参数就从CvPipeLineEditor的界面上删除了。
在这里插入图片描述

调整多个命令参数的执行顺序

用鼠标左键可以拖动 CvPipeLineEditor 中的命令参数行的上下顺序,这样就可以调节opencv命令的执行顺序。
在这里插入图片描述

添加命令用来载入实验用的.png

我已经将截图文件另存为了D:\my_tmp\dbg_openpnp1.png
添加ImageRead命令
在这里插入图片描述
将file参数用按钮浏览到D:\my_tmp\dbg_openpnp1.png, 确定。图片就显示在CvPipeLineEditor的预览中了。
在这里插入图片描述

识别吸嘴内壁

添加DetectCircularSymmetry命令
在这里插入图片描述
勾选诊断选项,就可以看到已经选择了吸嘴外壁。
在这里插入图片描述
如果要选择吸嘴内壁,就尝试着去改DetectCircularSymmetry命令的其他参数。

调试openpnp无法正确识别的吸嘴内壁或者其他视觉识别参数

openpnp是给了一些实际参数的,在吸嘴校验的pipeline edit中。
在这里插入图片描述

可以将这些参数的目标图片另存下来, 用ImageRead命令载入图片到CvPipeLineEditor。
然后将openpnp不好使的那些参数(或者曾经好使过的参数),抄录下来,在单独打开的CvPipeLineEditor中尝试调节参数。
或者再尝试查一下CvPipeLineEditor提供的这些opencv命令的用途,尝试加一些相关的opencv命令,尝试参数调节。
这样的话,理论上就可以找出,为啥设备标定时,吸嘴的图像识别是好的,但是过了一会,或过了一段时间就不好使了。

备注

那些过了一段时间,不能正确开机校验的吸嘴的图像,我看质量还挺好的。
尝试找一下哪些参数会影响图像识别。
CvPipeLineEditor是带图像识别预览的,如果参数调节的合适。这些参数用到openpnp中,效果也是一样的。

END

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

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

相关文章

数据治理006-数据标准的管理

元数据的分类和标准有哪些? 一、元数据的分类 元数据可以根据其描述的对象和属性不同,被分为不同的类型。以下是几种常见的元数据分类方法: 基于数据的类型:根据数据的类型,元数据可以被分为结构化元数据、非结构化元…

WPF用户控件的使用

WPF用户控件的使用 先看一下程序结构&#xff1a; WPF_Test是我的主程序&#xff1b;WPF_LIB是我添加的一个用户控件库&#xff0c;其中UserControl1是一个用户控件&#xff1b; 用户控件xaml代码&#xff1a; <UserControl x:Class"WPF_LIB.UserControl1"xmln…

爵士编曲:爵士钢琴编写的规律和步骤 关于教程的个人想法 举一反三

反思了下自己目前学习编曲和其他兴趣爱好时暴露出来的问题&#xff0c;就是举一反三的能力还有待提高&#xff01;平时多学习和多对学习内容进行举一反三&#xff0c;也就是根据一个例子&#xff0c;创作出类似的3个以上的例子&#xff0c;这样才算学会&#xff0c;并且事半功倍…

2024必备英语在线翻译工具推荐

英语在线翻译工具就如同一位随时待命的语言助手&#xff0c;为我们打破语言障碍&#xff0c;搭建起沟通的桥梁。接下来&#xff0c;让我们一起深入了解这些英语在线翻译工具的丰富功能及其为我们带来的便利。 1.福昕在线翻译 链接直达>>https://fanyi.pdf365.cn/doc …

【含文档】基于Springboot+微信小程序 的海产品加工销售一体化管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

基于SpringBoot+Vue+MySQL的民宿预订平台

系统展示 用户前台界面 管理员后台界面 商家后台界面 系统背景 随着旅游业的蓬勃发展&#xff0c;民宿作为一种独特的住宿方式&#xff0c;受到了越来越多游客的青睐。然而&#xff0c;传统的民宿预定方式往往存在信息不对称、效率低下等问题&#xff0c;难以满足游客的个性化需…

python的内存管理机制

python的内存管理机制主要分为三个部分&#xff1a;引用计数、垃圾回收和内存池机制。 引用计数机制&#xff1a; python通过维护每个对象的引用计数来跟踪内存中的对象。当对象被创建时就会有一个引用计数&#xff0c;当对象不再被使用时&#xff0c;引用计数为0&#xff0c…

Android SystemUI组件(08)睡眠灭屏 锁屏处理流程

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注左侧上方锁屏分析部分 睡眠灭屏 即可。 Power按键的处理逻辑最终是由PhoneWindowManager来完…

【电路基础 · 2】电阻电路的等效变换(自用)

总览 1.电路的等效变换 1.1 电阻电路 1.2 等效变换是什么 1.3 线性电路和非线性电路 1.4 时变电路和非时变电路 1.5 二端网络&#xff08;一端口网络&#xff09;、四端网络&#xff08;二端口网络&#xff09;、六端网络&#xff08;三端口网络&#xff09; 1.6 两端电路的等…

每日一题:二分查找

文章目录 一、思路一&#xff1a;常规思路1、寻找固定值2、寻找左边界3、寻找右边界 二、思路二&#xff1a;红蓝法二分三、模板题1、二分查找2、在排序数组中查找元素的第一个和最后一个位置 二分查找&#xff0c;顾名思义&#xff0c;就是每次筛选能晒掉一半的数据。 二分查…

leetcode每日一题day22(24.10.2)——准时到达的列车最小度

思路&#xff1a;这种在有约束条件情况下&#xff0c;求最值或最符合要求的情况&#xff0c;首先是很容易想到&#xff0c;从时速为1开始往后找找到满足条件就输出&#xff0c;但这无疑工程量很大&#xff0c;每种可能的速度都要对列车数组进行遍历&#xff0c; 时间复杂度为C…

数据库第8章编程题2

10-1 查询选修某两门课程的学生&#xff08;MSSQL) 本题目要求编写SQL语句&#xff0c; 检索出 sc表中至少选修了’C001’与’C002’课程的学生学号。 提示&#xff1a;MSSQLServer 评测SQL语句。 表结构: 请在这里写定义表结构的SQL语句。例如&#xff1a; -- 学生选课成…

Pikachu-Cross-Site Scripting-存储型xss

存储型xss &#xff0c;随便输入点内容&#xff0c;都能保存下来&#xff1b;刷新后也不会丢失&#xff1b;输入特殊字符&#xff0c;也能原样返回&#xff1b; 查看代码&#xff0c;也可以看到输出结果直接原路返回&#xff0c;不做处理 构造payload <script>alert(1)…

深度学习:cGAN和pix2pix图像转换

cGAN和pix2pix的基础概念 cGAN cGAN是条件生成对抗网络&#xff08;Conditional Generative Adversarial Networks&#xff09;的简称。 它是一种基于基础GAN&#xff08;Generative Adversarial Networks&#xff09;架构的变体&#xff0c;通过给GAN模型引入额外的信息或条…

翔云 OCR:发票识别与验真

在数字化时代&#xff0c;高效处理大量文档和数据成为企业和个人的迫切需求。翔云 OCR 作为一款强大的光学字符识别工具&#xff0c;在发票识别及验真方面表现出色&#xff0c;为我们带来了极大的便利。 一、翔云 OCR 简介 翔云 OCR 是一款基于先进的人工智能技术开发的文字识别…

酒店智能门锁SDK接口pro[V10] 门锁校验C#-SAAS本地化-未来之窗行业应用跨平台架构

一、代码 int 酒店标识_int Convert.ToInt32(酒店标识);StringBuilder 锁号2024 new StringBuilder(8);//信息 "未知返回值&#xff1a;" bufCard_原始;GetGuestLockNoByCardDataStr_原始(酒店标识_int, bufCard_原始.ToString(), 锁号2024);StringBuilder 退…

Pie-饼图

参考文档&#xff1a;Pie - Pie_set_color - Document (pyecharts.org) 模板 from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker import Faker"""1-Pie() 创建Pie对象2-.add("", [list(z) for z in zi…

CSS 圆形边框与阴影

目录 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影

CSS盒子模型基础知识(23个案例+代码+效果图)

目录 1.边框样式 案例&#xff1a;制作一个边框为实线的正方形 1&#xff09;代码​编辑 2&#xff09;效果 案例&#xff1a;制作一个边框为虚线的正方形 1&#xff09;代码 2&#xff09;效果 案例&#xff1a;制作一个边框为点线的正方形 1&#xff09;代码 2&#xff09;效…

二分查找一>:在排序数组中查找元素的第一个和最后一个位置

1.题目&#xff1a; 2.解析:这里不能用传统二分&#xff0c;因为涉及范围&#xff0c;传统二分时间复杂度会降为O(N)&#xff0c;要做些改动。 步骤一&#xff1a;查找区间左端点 细节图&#xff1a; 步骤二&#xff1a;查找区间右端点&#xff1a; 细节图&#xff1a; 代码…