Python3 - 无法根据来自对象检测过程的输入正确启动输出设备

Posted

技术标签:

【中文标题】Python3 - 无法根据来自对象检测过程的输入正确启动输出设备【英文标题】:Python3 - Fail to actuate output device properly based on input from object detection process 【发布时间】:2021-09-14 15:34:04 【问题描述】:

首先,我在本文末尾附上我项目的一些通用规范。

我的项目的主要目标是通过摄像头视觉检测口罩的使用情况,然后相应地执行某些操作。例如,如果检测到有人没有戴口罩,蜂鸣器会开始不停地发出蜂鸣声,红色 LED 开始闪烁,大门不会打开。

到目前为止,我设法实现了对象检测过程,它能够充分检测到面罩的使用。对象检测过程应该在无限循环中连续运行,没有任何延迟,并且会停止,直到我按下特定键。

问题是当我尝试在同一个循环中合并驱动过程的延迟时,例如闪烁的 LED。对象检测过程的视频流由于延迟而冻结。

因此,我尝试了一些方法来确保输出驱动过程不会中断对象检测过程,例如通过实现多处理以及作为缓冲存储器存储对象检测过程产生的信息的 pickle 文件。但是,我仍然没有设法解决这个问题。我在从两个不同的进程同时写入/读取泡菜文件时遇到问题。

工艺要求如下。

进程1(主进程)

在无限循环中 没有延迟,迭代速度受硬件和操作系统的限制 检测到口罩后立即写入输出信号

流程2(二级流程)

从主进程收到信号后开始运行程序 能够从主进程读取输出信号 能够在不中断主进程的情况下进行延迟操作 能够删除/编辑主进程的输出信号 主进程终止后杀死

因此,我想知道是否有任何方法/库/函数能够以不同的时间同时独立运行两个进程,并能够在这些进程中检索/传输信息。如果有必要分享我的代码,请通知我。

谢谢。

我的项目的一般规格:

编程语言,Python3 文本编辑器/编译器,Code-OSS 硬件,Nvidia Jetson Nano 2GB 操作系统、Linux/Nvidia JetPack 预训练模型,SSD-Mobilenet V2

【问题讨论】:

【参考方案1】:

在阅读和搜索有关多处理的更多信息后,我设法找到了对我的项目有用的东西,它是“使用服务器进程共享数据”和“进程同步”的方法,有关此功能的更多详细信息,您可以参考 YouTube下面的视频。强烈建议您观看完整的播放列表,以便您对多处理有更广泛的了解,这可能会简化您的工作。

使用服务器进程共享数据 https://youtu.be/v5u5zSYKhFs

进程同步 https://youtu.be/-zJ1x2QHTKE

这两种方法都成功解决了我的问题,我认为我之前的问题是由于两个进程同时写入和读取泡菜文件的问题而引起的。

【讨论】:

以上是关于Python3 - 无法根据来自对象检测过程的输入正确启动输出设备的主要内容,如果未能解决你的问题,请参考以下文章

python cv2的视频检测:睁眼闭眼

GNU Make 无法检测到明显的规则

Python3 open() 函数-用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

对象检测 ARKit 与 CoreML

无法解码来自客户端的握手请求

为啥我的井字游戏代码无法检测到有人中奖了?蟒蛇 3