如何解决Python3 - 无法根据对象检测过程的输入正确启动输出设备
首先,我会在本文末尾附上我的项目的一些通用规范。
我的项目的主要目标是通过相机视觉检测口罩的使用情况,然后相应地执行某些操作。例如,如果检测到没有戴口罩的人,蜂鸣器将开始连续鸣叫,红色 LED 开始闪烁,门不会打开。
到目前为止,我设法实现了对象检测过程,它能够充分检测到口罩的使用。对象检测过程应该在无限循环中连续运行,没有任何延迟,直到我按下特定键才会停止。
问题是当我尝试在同一个循环中加入驱动过程的延迟,例如闪烁的 LED。由于延迟,目标检测过程的视频流冻结。
因此,我尝试了一些方法来确保输出驱动过程不会中断对象检测过程,例如通过实现多处理和 pickle 文件作为缓冲存储器存储对象检测过程产生的信息。但是,我仍然没有设法解决这个问题。我在从两个不同的进程同时写入/读取泡菜文件时遇到问题。
流程要求如下。
进程 1(主进程)
- 无限循环
- 无延迟,迭代速度受硬件和操作系统限制
- 能够在检测到面罩后立即写入输出信号
进程 2(二级进程)
因此,我想知道是否有任何方法/库/函数能够以不同的时间同时独立运行两个进程,并能够在这些进程中检索/传输信息。如果需要分享我的代码,请通知我。
谢谢。
我的项目的一般规格:
- 编程语言,python3
- 文本编辑器/编译器,Code-OSS
- 硬件,Nvidia Jetson Nano 2GB
- 操作系统、Linux/Nvidia JetPack
- 预训练模型,SSD-Mobilenet V2
解决方法
在阅读和搜索有关多处理的更多信息后,我设法找到了对我的项目有用的东西,它是“使用服务器进程共享数据”和“进程同步”的方法,有关此功能的更多详细信息,您可以参考 YouTube下面的视频。强烈建议您观看完整的播放列表,以便您对多处理有更广泛的了解,这可能会简化您的工作。
使用服务器进程共享数据 https://youtu.be/v5u5zSYKhFs
进程同步 https://youtu.be/-zJ1x2QHTKE
这两种方法都成功地解决了我的问题,我认为我之前的问题是由于两个进程同时写入和读取pickle文件的问题引起的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。