From 483a78d423f03bb98796e2c391a21f9958a71923 Mon Sep 17 00:00:00 2001
From: "li.zhenye"
Date: Mon, 8 Aug 2022 14:16:03 +0800
Subject: [PATCH] =?UTF-8?q?[ext]=20=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=A8=A1?=
=?UTF-8?q?=E6=8B=9F=E6=B5=8B=E8=AF=95=E5=8A=9F=E8=83=BD=E7=9A=84=E7=AE=80?=
=?UTF-8?q?=E6=B4=81=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 45 ++++++++++++++++++++++++++++++++++++++++++---
config.py | 2 +-
main_test.py | 4 ++--
utils.py | 2 +-
4 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index db6170b..fa87f18 100644
--- a/README.md
+++ b/README.md
@@ -176,9 +176,9 @@
结论是考虑RGB相机的触发存在一定问题。
-## 喷阀检查
+# 喷阀检查相关
-### 喷阀检验脚本
+## 喷阀检验脚本
为了能够有效的对喷阀进行检查,我写了一个用于测试的小socket,这个小socket的使用方式是这样的:
@@ -202,7 +202,7 @@ python valve_test.py -c

-### 只使用RGB或SPEC预测
+## 仅使用RGB或SPEC预测以调节延时
只使用RGB或者SPEC预测时,使用如下代码:
@@ -218,6 +218,16 @@ python main.py -oc
python main.py -os
```
+## 同时开启喷阀数量限制
+
+由于喷阀的电源有限,所以必须对同时开启的喷阀数量加以限制,否则会造成流在导线上的电流过大,就像是在烧水。
+
+最大允许开启的喷阀数量$n$和电源功率$p$之间的关系如下:
+$$
+n = \frac{p}{12}
+$$
+这里$12 V \cdot A$是对应喷阀的电压和电流的乘积,建议在这个基础之上再进行数量除以$2$的操作,因为我们不可合并rgb和spec两个mask,所以如果当出现杂质时,仅对一个mask的最大值进行限定存在风险。
+
# 代码加密
本来想使用pyarmor,但是它在加密过程中一直重复不停的进行下载,这太麻烦了,而且还要考虑到兼容性问题,所以果断放弃,后来发现简单的方案是这样的,把python编译成字节码就行:
@@ -296,3 +306,32 @@ jmpy -i "tobacco_color" [-o output dir]
甚至可以加入延时:

+
+# 模拟运行与文件转换
+
+## 模拟运行
+
+需要模拟运行的话可以使用`main_test.py`脚本进行。模拟运行的方法如下:
+
+```shell
+python main_test.py /path/to/test
+```
+
+其中`/path/to/test`填写C程序抓取的运行时数据。运行后的数据如下:
+
+
+
+## 转换保存下来的buffer文件
+
+脚本用法:
+
+```shell
+python main_test.py /path/to/convert -convert_dir /output/dir -s
+```
+
+这里`path/to/convert`填写转换的buffer文件夹,文件夹需要是只有rgb和spec文件`/output/dir`填输出文件夹,如果输出文件夹不存在就会创建。如果不加`-s(--silent)`静默参数就会顺便显示预测的结果。
+
+转换后的图片经过测试可以正常在ENVI中打开:
+
+
+
diff --git a/config.py b/config.py
index 4b5f9b0..20f0d66 100644
--- a/config.py
+++ b/config.py
@@ -34,7 +34,7 @@ class Config:
# mask parameter
target_size = (1024, 1024) # (Width, Height) of mask
valve_merge_size = 2 # 每两个喷阀当中有任意一个出现杂质则认为都是杂质
- max_open_valve_limit = 49 # 最大同时开启喷阀限制,按照电流计算,当前的喷阀可以开启的喷阀 600W的电源 / 12V电源 = 50A, 一个阀门1A
+ max_open_valve_limit = 25 # 最大同时开启喷阀限制,按照电流计算,当前的喷阀可以开启的喷阀 600W的电源 / 12V电源 = 50A, 一个阀门1A
# save part
offset_vertical = 0
diff --git a/main_test.py b/main_test.py
index 2c00bca..bc04f80 100644
--- a/main_test.py
+++ b/main_test.py
@@ -140,6 +140,7 @@ class TestMain:
ax3 = fig.add_subplot(gs[1, 0])
ax4 = fig.add_subplot(gs[1, 1])
ax5 = fig.add_subplot(gs[2, :])
+
fig.suptitle("Result")
ax1.imshow(rgb_img)
@@ -219,7 +220,7 @@ if __name__ == '__main__':
parser.add_argument('-convert_dir', default=None, help='是否将c语言采集的buffer进行转换')
parser.add_argument('-s', '--silent', default=False, action='store_true', help='是否显示')
args = parser.parse_args()
- # file check
+ # file path check
if args.convert_dir is not None:
if os.path.exists(args.convert_dir):
if not os.path.isdir(args.convert_dir):
@@ -230,7 +231,6 @@ if __name__ == '__main__':
else:
print(f"已创建需要存放转换文件的文件夹 {args.convert_dir}")
os.makedirs(args.convert_dir, mode=0o777, exist_ok=False)
-
tester = TestMain()
tester.pony_run(test_path=args.path, test_rgb=args.test_rgb, test_spectra=args.test_spec,
get_delta=args.get_delta, convert_dir=args.convert_dir, silent=args.silent)
diff --git a/utils.py b/utils.py
index e4b9cf4..9f39820 100755
--- a/utils.py
+++ b/utils.py
@@ -182,7 +182,7 @@ def valve_limit(mask: np.ndarray, max_valve_num: int) -> np.ndarray:
:param max_valve_num: 最大阀门数量
:return:
"""
- assert (max_valve_num >= 5) and (max_valve_num < 50)
+ assert (max_valve_num >= 1) and (max_valve_num < 50)
row_valve_count = np.sum(mask, axis=1)
if np.any(row_valve_count > max_valve_num):
over_rows_idx = np.argwhere(row_valve_count > max_valve_num).ravel()