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 ![截屏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预测时,使用如下代码: @@ -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] 甚至可以加入延时: ![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) + 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()