微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?