openpnp - 给.openpnp2目录减肥

news2024/11/26 3:26:57

文章目录

    • openpnp - 给.openpnp2目录减肥
    • 概述
    • 笔记
    • 不会引起.openpnp2目录size持续增加的目录/文件列表
    • 会引起.openpnp2目录size持续增加的目录/文件列表
    • 可以做一个程序来给openpnp减肥
    • END

openpnp - 给.openpnp2目录减肥

概述

听同学说, 如果.openpnp2将磁盘分区都占满后, 就会出现撞刀的事故.
我装过好多版openpnp(dev/test 各个发行时间的版本), 反正到了我确实生产软件用 openpnp-2022/8/1 的时候, .openpnp2目录size基本不变(< x00KB). 也就没在关注这个问题.

今天偶然看了一眼, 80MB+了. 啥情况?

笔记

打开.openpnp2目录, 看到以下内容

在这里插入图片描述

不会引起.openpnp2目录size持续增加的目录/文件列表

backups 目录 : 这个目录是配置备份, 主要我们不主动点击备份, 就不会有新的内容.
在这里插入图片描述
log 目录 : 只要我们不开日志, 就不会产生新的内容. 即使开日志, 日志的增加也不是大头.

在这里插入图片描述
scripts目录 里面是openpnp用的脚本文件, 一般我们调试完成(e.g. 增加接入西门子电动飞达), 就不会向这个目录中增加脚本.
这个目录中, 即使增加openpnp脚本, size也不大(x00KB)

themes 目录, 这个目录中是皮肤文件, 默认openpnp安装完, 这个目录是空的.

machine.xml 设备树对应的配置文件, 设备调试完, 就不会变了.

packages.xml 封装对应的配置文件, 设备调试完, 就不会变了.

parts.xml 元件对应的配置文件, 设备调试完, 就不会变了.

vison-setting.xml 视觉设置对应的配置文件, 设备调试完, 就不会变了.

会引起.openpnp2目录size持续增加的目录/文件列表

除了上述目录/文件, 其他的目录/文件都会引起openpnp每次运行都会增加size, 也就是我们要关注openpnp减肥的内容
这些多出要处理的目录数量是不定的, 和配置有关系, 一般是由某项配置中, 出现了xxWriteDebug (e.g. ImageWriteDebug)引起的.
就是说, 这些在.openpnp2目录下每次运行都会多出来的内容, 是由于调试需求, 将文件写到磁盘上, 给开发者/使用者存档看的文件.
如果不写到磁盘上, 那每次openpnp运行完成后, .openpnp2目录size也就不会持续增加.

因为这些多出来的目录名称是不定的, 所以我们在openpnnp运行完成关闭后, 人工去观察一下.
对于我现在的.openpnp2目录, 多出来的目录为 : org.openpnp.vision.pipeline.stages.ImageWriteDebug
从这个目录名称看, 是因为视觉管道的图像由于开了调试属性 ImageWriteDebug 引起的.
去按照目录名称去找到对应的属性, 关了即可.
在这里插入图片描述
在视觉TAB页中, 可以看到库存的视觉识别方案和默认的视觉识别方案, 我们自己特化的视觉识别方案.
在视觉识别方案列表中, 逐个点击视觉识别方案. 只要看到视觉管道的右边的Edit是可以点击的, 就需要点击进去看看, 如果有xxWriteDebug属性, 就要关掉他.

在这里插入图片描述
当改视觉方案时, 因为我们只是关掉属性, 不需要启动设备.
将xxWriteDebug属性前面的Enable的勾去掉就行, 不用删除这个属性
在这里插入图片描述
可以看到, 这个属性产生的文件名称为 bv_source_.png, 稍后我们可以安全的删除这些文件.
在这里插入图片描述
可以看到, 这个属性产生的文件名称为 bv_result_
.png, 稍后我们可以安全的删除这些文件.

因为视觉识别方案已经改了, 要保存一下. 但是UI上没有保存按钮, 只能退出视觉解决方案时被动保存.
在这里插入图片描述
在这里插入图片描述

继续检查其他的视觉识别方案, 关掉 xxWriteDebug属性, 记录产生的文件通配名称.
修改了所有的视觉识别方案, 可以看到产生的文件都为 bv_source_.png和bv_result_.png.

保存配置, 关掉openpnp.
在这里插入图片描述

尝试去4个主配置文件(machine.xml, packages.xml, parts.xml, vision-settings.xml)中去找 bv_source 和 bv_result.
vision-settings.xml 中找到
在这里插入图片描述

<cv-stage class="org.openpnp.vision.pipeline.stages.ImageWriteDebug" name="deb0" enabled="true" prefix="bv_source_" suffix=".png"/>

可以看到库存的视觉识别方案的xxWriteDebug的属性默认是true.
在这里插入图片描述

那些是enabled = false的视觉识别方案, 都是我们从界面上已经改过来的.

还可以看出一点, 如果是从openpnp默认的视觉识别方案特化自己的视觉识别方案, 那么xxWriteDebug就为true, 也就会在磁盘上产生垃圾(调试)文件. 所以从openpnp系统的视觉识别方案特化后, 需要自己将xxWriteDebug改为false.

查了一下, 除了vision-settings.xml之外, machine.xml有xxWriteDebug属性, 文件前缀名称为runout_calibration_source_ 和 runout_calibration_result_, 不过enabled = false, 不用管.
在这里插入图片描述
从这还可以看出, 可以在vision-settings.xml和machine.xml中, 将xxWriteDebug属性, 都直接改为false, 这就可以直接避免产生垃圾(调试)文件.

现在去org.openpnp.vision.pipeline.stages.ImageWriteDebug目录, 将目录文件按照详细信息显示, 按照名称排序显示, 将 bv_source*.png 和 bv_result*.png都手工删掉.
在这里插入图片描述
看了一眼, 确实中这个目录只有这2种前缀名称的文件.
在这里插入图片描述
而且这2种文件, 就是.openpnp2目录体积的大头, 删掉这些文件.
再看一眼.openpnp2目录size
在这里插入图片描述
备份目录和日志目录, 大概看一眼, 然后差值就是实际openpnp的运行时产生的文件体积, 可以看到, 删除了xxWriteDebug产生的文件, .openpnp2目录体积就小很多了.

可以做一个程序来给openpnp减肥

可以做一个批处理(或者写一个小程序 e.g. c++), 来自动启动openpnp, 在启动openpnnp之前, 先将那些可以安全删除(或者没有保留价值)的内容(e.g. 日志)先删掉, 再启动openpnp, 这样就不用担心.openpnp2的size会增加了.

如果在.openpnnp2目录中出现了新的未处理的目录, 可以弹出告警框, 让我们可以来分析和升级程序.

还可以增加一个功能, 自动检测修改openpnp的4个配置文件, 将xxWriteDebug选项都自动扫描, 然后改为false.

END

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

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

相关文章

【word日常操作】word里面表格已经设置了重复标题行,但是显示无效怎么办

在制作表格的过程当中&#xff0c;相信很多人都知道&#xff0c;表格不只有一页的时候就会在下一面&#xff0c;也会显示出来&#xff0c;然而这时我们需要让word表头重复出现&#xff0c;那么该怎么办呢? 1 出现问题 word表格如何设置多页时能重复表头&#xff0c;百度后出…

ElasticSearch系列-索引原理与数据读写流程详解

索引原理 倒排索引 倒排索引&#xff08;Inverted Index&#xff09;也叫反向索引&#xff0c;有反向索引必有正向索引。通俗地来讲&#xff0c;正向索引是通过key找value&#xff0c;反向索引则是通过value找key。ES底层在检索时底层使用的就是倒排索引。 索引模型 现有索…

01- 从零开始完整实现-循环神经网络RNN

一 简介 使用 pytorch 搭建循环神经网络RNN&#xff0c;循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类用于 处理序列数据的神经网络架构。与传统神经网络不同&#xff0c;RNN 具有内部循环结构&#xff0c;可以在处理序列数据时保持状态…

Qwen7b微调保姆级教程

前方干货预警&#xff1a;这可能是你能够找到的&#xff0c;最容易理解&#xff0c;最容易跑通的&#xff0c;适用于各种开源LLM模型的&#xff0c;同时支持多轮和单轮对话数据集的大模型高效微调范例。 我们构造了一个修改大模型自我认知的3轮对话的玩具数据集&#xff0c;使用…

HONEYWELL 05704-A-0145 工控控制模块

HONEYWELL 05704-A-0145 工控控制模块&#xff08;Industrial Control Module&#xff09;是工业自动化领域中的一种关键组件&#xff0c;用于控制和监测各种工业过程和设备。这些模块具有多种特点和功能&#xff0c;以下是一些通常与HONEYWELL 05704-A-0145 工控控制模块相关的…

态路小课堂丨光纤跳线的使用与维护小指南

点击蓝字 | 关注我们 TARLUZ态路 在光通信领域中&#xff0c;光纤跳线扮演着至关重要的角色。它作为一种用于连接光纤设备之间的光纤连接线&#xff0c;可以根据实际需求进行定制&#xff0c;以此来满足不同网络拓扑和连接方式的要求。在安装光纤跳线时&#xff0c;遇到的问题…

3ds max文件打包?max插件CG Magic一键打包整起!

3ds max文件如何打包&#xff1f;这个问题&#xff0c;小编听到不少网友的提问&#xff01; 今天CG Magic小编来和大家聊聊&#xff0c;文件更高效的操作&#xff0c;如何打包处理呢&#xff1f; 3DMAX这款软件的受众群体是比较高的&#xff0c;在工作方便的同时&#xff0c;…

Qt ---进程间的通信

进程间通讯方式Qt 提供了四种进程间通信的方式&#xff1a; 使用共享内存&#xff08;shared memory&#xff09;交互&#xff1a;这是Qt 提供的一种各个平台均有支持的进程间交互的方式。TCP/IP&#xff1a;其基本思想就是将同一机器上面的两个进程一个当做服务器&#xff0c…

24考研王道408数据结构-第三章“栈、队列、数组”课后算法题(P70--栈的模拟)

第三题 #include<iostream> using namespace std;bool solution(char s[]){int n8;int numI0;for(int i0;i<n;i){if(s[i]I){numI;}if(s[i]O){if(numI0){return false;}numI--;}}return true; }int main(){//char s[8]{I,O,I,I,O,I,O,O};char s[8]{I,O,O,I,O,I,I,O};if…

电压放大器的应用范围有哪些

电压放大器是一种常见的电子设备&#xff0c;用于将输入信号的电压放大到更高的水平。它在各个领域中具有广泛的应用范围。本文将详细介绍电压放大器的应用。 音频放大器&#xff1a; 电压放大器在音频系统中起着重要作用&#xff0c;用于将来自音源&#xff08;如CD播放器、MP…

Mybatis 动态语言 - mybatis-thymeleaf

前面我们介绍了Mybatis动态SQL的使用&#xff1b;本篇我们介绍使用mybatis-thymeleaf动态语言生成动态SQL。 如果您对Mybatis动态SQL不太了解&#xff0c;建议您先进行了解后再阅读本篇&#xff0c;可以参考&#xff1a; Mybatis 动态SQL – 使用if,where标签动态生成条件语句…

为什么有人会先考二建再考一建?

因为时间&#xff0c;因为难度&#xff0c;因为需求。 首先说时间&#xff0c;考二建比考一建的限制少很多&#xff0c;很多人入职没多久&#xff0c;研究生甚至在大学就能考了。本着早考早有证&#xff0c;早考早赚钱的原则&#xff0c;很多人会选择先考二建。 再说难度&…

Jmeter —— 常用的几种断言方法(基本用法)

在使用JMeter进行性能测试或者接口自动化测试工作中&#xff0c;经常会用到的一个功能&#xff0c;就是断言&#xff0c;断言相当于检查点&#xff0c;它是用来判断系统返回的响应结果是否正确&#xff0c;以此帮我们判断测试是否通过&#xff0c;本文 主要介绍几种常用的断言&…

【Spring使用三级缓存解决循环依赖的过程】

testService1和testService2相互依赖 当Spring创建testService1对象时&#xff0c;它会先从一级缓存中查找是否存在testService1的实例。如果缓存中不存在testService1实例&#xff0c;它将继续查找二级缓存中是否存在testService1。如果二级缓存中也不存在testService1实例&…

GDAL+Java实现获取对应栅格影像经纬度对应的像素值

从前面的GDAL系列博文中&#xff0c;可以指导GDAL可以将栅格影像文件读出为对应的多维数组&#xff0c;可以读出每一个像素格对应的像素值。但如何根据经纬度直接读取像素值呢&#xff1f;博主从查阅了网上的相关文档&#xff0c;发现有个人写的计算公式是错误的&#xff0c;用…

日期类完善

目录 日期类&#xff1a; 运算符重载&#xff1a; ​编辑 赋值重载&#xff1a; 拷贝构造和赋值重载的区别&#xff1a; 实现赋值重载&#xff1a; 划分成员函数&#xff1a; 日期类的声明和定义分离 日期类-&#xff1a; 日期类- 前置后置 日期类&#xff1a; 写一个简…

获取一个对象的直接接口和间接接口

package com.ljr;import java.util.*;public class InterfaceUtils {public static List<Class<?>> getInterfaces(Object obj) {List<Class<?>> interfaces new ArrayList<>();Class<?> clazz obj.getClass();while (clazz ! null) …

(09_13)杭州站|阿里云 Serverless 技术实践营(Serverless + 大数据)开启报名!

活动简介 “Serverless 技术实战与创新沙龙 ” 是一场以 Serverless 为主题的开发者活动&#xff0c;通过一个下午的时间增进对 Serverless 技术的理解&#xff0c;快速上手,活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主&#xff0c;活动形式为…

肖sir__mysql之子查询语句__006

一、子查询 定义:一个查询嵌套另一个查询 例如&#xff1a; 题目&#xff1a;财务部门的收入总和&#xff1b; dept&#xff1a;财务部门 incoming&#xff1a;工资 &#xff08;1&#xff09;先将一个结果查询出来&#xff1a;财务部门的编号查询出来 select dept1 from dept …

管理类联考——数学——汇总篇——知识点突破——代数——等差数列

⛲️ 一、考点讲解 1.定义 如果在数列{ a n a_n an​}中&#xff0c; a n 1 − a n d a_{n1}-a_nd an1​−an​d&#xff08;常数&#xff09; &#xff08; n ∈ N &#xff0b; &#xff09; &#xff08;n∈N_&#xff0b;&#xff09; &#xff08;n∈N&#xff0b;​&a…