[ext] 增加了模拟测试功能的简洁性

This commit is contained in:
li.zhenye 2022-08-08 14:16:03 +08:00
parent fd6671d3d4
commit 483a78d423
4 changed files with 46 additions and 7 deletions

View File

@ -176,9 +176,9 @@
结论是考虑RGB相机的触发存在一定问题。 结论是考虑RGB相机的触发存在一定问题。
## 喷阀检查 # 喷阀检查相关
### 喷阀检验脚本 ## 喷阀检验脚本
为了能够有效的对喷阀进行检查我写了一个用于测试的小socket这个小socket的使用方式是这样的 为了能够有效的对喷阀进行检查我写了一个用于测试的小socket这个小socket的使用方式是这样的
@ -202,7 +202,7 @@ python valve_test.py -c
![截屏2022-08-02 14.16.24](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/%E6%88%AA%E5%B1%8F2022-08-02%2014.16.24.png) ![截屏2022-08-02 14.16.24](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/%E6%88%AA%E5%B1%8F2022-08-02%2014.16.24.png)
### 只使用RGB或SPEC预测 ## 仅使用RGB或SPEC预测以调节延时
只使用RGB或者SPEC预测时使用如下代码 只使用RGB或者SPEC预测时使用如下代码
@ -218,6 +218,16 @@ python main.py -oc
python main.py -os python main.py -os
``` ```
## 同时开启喷阀数量限制
由于喷阀的电源有限,所以必须对同时开启的喷阀数量加以限制,否则会造成流在导线上的电流过大,就像是在烧水。
最大允许开启的喷阀数量$n$和电源功率$p$之间的关系如下:
$$
n = \frac{p}{12}
$$
这里$12 V \cdot A$是对应喷阀的电压和电流的乘积,建议在这个基础之上再进行数量除以$2$的操作因为我们不可合并rgb和spec两个mask所以如果当出现杂质时仅对一个mask的最大值进行限定存在风险。
# 代码加密 # 代码加密
本来想使用pyarmor但是它在加密过程中一直重复不停的进行下载这太麻烦了而且还要考虑到兼容性问题所以果断放弃后来发现简单的方案是这样的把python编译成字节码就行 本来想使用pyarmor但是它在加密过程中一直重复不停的进行下载这太麻烦了而且还要考虑到兼容性问题所以果断放弃后来发现简单的方案是这样的把python编译成字节码就行
@ -296,3 +306,32 @@ jmpy -i "tobacco_color" [-o output dir]
甚至可以加入延时: 甚至可以加入延时:
![img](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/word-image-15.png) ![img](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/word-image-15.png)
# 模拟运行与文件转换
## 模拟运行
需要模拟运行的话可以使用`main_test.py`脚本进行。模拟运行的方法如下:
```shell
python main_test.py /path/to/test
```
其中`/path/to/test`填写C程序抓取的运行时数据。运行后的数据如下
![image-20220808135053854](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/image-20220808135053854.png)
## 转换保存下来的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中打开
![image-20220808123044267](https://raw.githubusercontent.com/Karllzy/imagebed/main/img/image-20220808123044267.png)

View File

@ -34,7 +34,7 @@ class Config:
# mask parameter # mask parameter
target_size = (1024, 1024) # (Width, Height) of mask target_size = (1024, 1024) # (Width, Height) of mask
valve_merge_size = 2 # 每两个喷阀当中有任意一个出现杂质则认为都是杂质 valve_merge_size = 2 # 每两个喷阀当中有任意一个出现杂质则认为都是杂质
max_open_valve_limit = 49 # 最大同时开启喷阀限制,按照电流计算,当前的喷阀可以开启的喷阀 600W的电源 / 12V电源 = 50A, 一个阀门1A max_open_valve_limit = 25 # 最大同时开启喷阀限制,按照电流计算,当前的喷阀可以开启的喷阀 600W的电源 / 12V电源 = 50A, 一个阀门1A
# save part # save part
offset_vertical = 0 offset_vertical = 0

View File

@ -140,6 +140,7 @@ class TestMain:
ax3 = fig.add_subplot(gs[1, 0]) ax3 = fig.add_subplot(gs[1, 0])
ax4 = fig.add_subplot(gs[1, 1]) ax4 = fig.add_subplot(gs[1, 1])
ax5 = fig.add_subplot(gs[2, :]) ax5 = fig.add_subplot(gs[2, :])
fig.suptitle("Result") fig.suptitle("Result")
ax1.imshow(rgb_img) ax1.imshow(rgb_img)
@ -219,7 +220,7 @@ if __name__ == '__main__':
parser.add_argument('-convert_dir', default=None, help='是否将c语言采集的buffer进行转换') parser.add_argument('-convert_dir', default=None, help='是否将c语言采集的buffer进行转换')
parser.add_argument('-s', '--silent', default=False, action='store_true', help='是否显示') parser.add_argument('-s', '--silent', default=False, action='store_true', help='是否显示')
args = parser.parse_args() args = parser.parse_args()
# file check # file path check
if args.convert_dir is not None: if args.convert_dir is not None:
if os.path.exists(args.convert_dir): if os.path.exists(args.convert_dir):
if not os.path.isdir(args.convert_dir): if not os.path.isdir(args.convert_dir):
@ -230,7 +231,6 @@ if __name__ == '__main__':
else: else:
print(f"已创建需要存放转换文件的文件夹 {args.convert_dir}") print(f"已创建需要存放转换文件的文件夹 {args.convert_dir}")
os.makedirs(args.convert_dir, mode=0o777, exist_ok=False) os.makedirs(args.convert_dir, mode=0o777, exist_ok=False)
tester = TestMain() tester = TestMain()
tester.pony_run(test_path=args.path, test_rgb=args.test_rgb, test_spectra=args.test_spec, 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) get_delta=args.get_delta, convert_dir=args.convert_dir, silent=args.silent)

View File

@ -182,7 +182,7 @@ def valve_limit(mask: np.ndarray, max_valve_num: int) -> np.ndarray:
:param max_valve_num: 最大阀门数量 :param max_valve_num: 最大阀门数量
:return: :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) row_valve_count = np.sum(mask, axis=1)
if np.any(row_valve_count > max_valve_num): if np.any(row_valve_count > max_valve_num):
over_rows_idx = np.argwhere(row_valve_count > max_valve_num).ravel() over_rows_idx = np.argwhere(row_valve_count > max_valve_num).ravel()