mirror of
https://github.com/NanjingForestryUniversity/supermachine-tobacco.git
synced 2025-11-08 06:13:53 +00:00
[ext] 增加了模拟测试功能的简洁性
This commit is contained in:
parent
fd6671d3d4
commit
483a78d423
45
README.md
45
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中打开:
|
||||
|
||||

|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
2
utils.py
2
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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user