python-3.x - Python3 - 无法根据来自对象检测过程的输入正确启动输出设备
问题描述
首先,我在这篇文章的最后附上了我项目的一些通用规范。
我项目的主要目标是通过摄像头视觉检测面罩的使用,然后相应地执行某些动作。例如,如果它检测到有人没有戴口罩,蜂鸣器将开始持续蜂鸣,红色 LED 开始闪烁,大门不会打开。
到目前为止,我设法实现了对象检测过程,它能够充分检测面罩的使用。对象检测过程应该在无限循环中连续运行,没有任何延迟,并且会停止,直到我按下特定键。
问题是当我尝试在同一个循环中合并驱动过程的延迟时,例如闪烁的 LED。由于延迟,对象检测过程的视频流冻结。
因此,我尝试了一些方法来确保输出驱动过程不会中断对象检测过程,例如通过实现多处理以及 pickle 文件作为缓冲存储器存储,存储对象检测过程产生的信息。但是,我仍然没有设法解决这个问题。我在从两个不同的进程同时写入/读取泡菜文件时遇到问题。
工艺要求如下。
流程一(主流程)
- 在无限循环中
- 没有延迟,迭代速度受硬件和操作系统的限制
- 检测到口罩后立即写入输出信号
流程2(二级流程)
- 一旦收到来自主进程的信号,就开始运行程序
- 能够读取主进程的输出信号
- 能够在不中断主进程的情况下延迟操作
- 能够删除/编辑主进程的输出信号
- 一旦主进程终止就被杀死
因此,我想知道是否有任何方法/库/函数能够同时独立地运行两个进程,具有不同的时间,并能够在这些进程中检索/传输信息。如果有必要分享我的代码,请通知我。
谢谢你。
我的项目的一般规格:
- 编程语言,Python3
- 文本编辑器/编译器,Code-OSS
- 硬件,Nvidia Jetson Nano 2GB
- 操作系统、Linux/Nvidia JetPack
- 预训练模型,SSD-Mobilenet V2
解决方案
在阅读和搜索有关多处理的更多信息后,我设法找到了对我的项目有用的东西,它是“使用服务器进程共享数据”和“进程同步”的方法,有关此功能的更多详细信息,您可以参考下面的 YouTube 视频。强烈建议您观看完整的播放列表,以便您对多处理有更广泛的了解,这可能会简化您的工作。
使用服务器进程共享数据 https://youtu.be/v5u5zSYKhFs
这两种方法都成功地解决了我的问题,我认为我之前的问题是由于两个进程同时写入和读取泡菜文件的问题而引起的。
推荐阅读
- php - Nginx 重写规则在编码 url 中的第一个时省略正斜杠 (/)
- go - 有没有办法使用 gomock 模拟类型断言?
- python - 枕头:将 GIF 转换为动画 webp 会产生一些噪音
- python-3.x - 生成包含 100 个元素的数组,其中 -1 和 1 的分布率为 25%(其余为 0)
- database - TDengine 数据库是否支持无模式?
- google-analytics - Google Analytics 将两个不同的目标与逻辑条件混合在一起
- python - 如果一个路由器网络关闭然后自动切换到另一个路由器网络,如何实现路由器冗余脚本
- ios - 在搜索多个选择未显示
- ajax - Ajax 的 .done 函数在哪里放置函数
- javascript - 在javascript中获取引号内的值