运行 Raspberry PI 启动时的 OpenVINO Python 脚本

Running an OpenVINO Python script on boot for Raspberry PI

我正在使用 Raspberry Pi 3 Model B Rev 1.2 运行ning Raspbian 10 (Buster)。我想在启动时 运行 一个 python 脚本,它使用 OpenVINO 和 OpenCV 来检测对象并显示来自网络摄像头的流。

我创建了一个 shell 脚本 launcher.sh 其中包含

#!/bin/sh

/opt/inte/openvino/bin/setupvars.sh
/usr/bin/python3 /home/pi/project/run.py

我 运行 $ chmod 775 launcher.sh 并确认该脚本适用于 $ sh launcher.sh

为了 运行 启动时的脚本,我使用了 $ sudo crontab -e 并在底部添加了 @reboot sh /home/pi/project/launcher.sh >/home/pi/logs/cronlog 2>&1

脚本在重新启动时执行 运行。日志 显示 OpenVINO 环境已初始化 ,但日志还表明我收到 ModuleNotFoundError:没有名为 'openvino' 的模块。我猜它只有在我从终端 运行 时才有效,因为我 bash.rc 每次都设置 OpenVINO 环境。

我做错了什么?在 Buster 上有更好的方法吗?

我无法解决我的具体问题,但我确实设法找到了 运行 我的脚本在启动时的方法。

我在 .bashrc 的末尾添加了以下行,

source /opt/intel/openvino/bin/setupvars.sh
cd /home/pi/project
python3 run.py 
cd 

每次打开新终端时初始化 OpenVINO 环境和运行我的脚本,然后我通过在末尾添加 @lxterminal 使 LXTerminal 运行 启动/etc/xdg/lxsession/LXDE-pi/autostart.

如果您打算将您的 Pi 用于其他任何用途,这是一种非常 hacky 的方式,而且不切实际。任何建议仍将不胜感激

感谢 Intel 的 Mauricio.R,我得以找到合适的解决方案。

  1. 创建一个初始化 OpenVINO 的脚本,并使用 nano ~/openvino-app-script 启动我的 python 脚本,内容为:
   #!/bin/bash
   source /opt/intel/openvino/bin/setupvars.sh     
   /usr/bin/python3 /path/to/script/run.py
  1. 使用 chmod u+x ~/openvino-app-script 更改 bash 脚本的权限和所有权。您应该确保此脚本通过 运行 与 bash ./openvino-app-script

  2. 一起工作
  3. 使用 sudo nano /etc/systemd/system/openvino-app.service 创建服务文件,内容为

    [Unit]
    Description=OpenVINO Python Script
    After=network.target

    [Service]
    Environment="DISPLAY=:0"
    Environment="XAUTHORITY=/home/pi/.Xauthority"
    ExecStart=/home/pi/openvino-app-script
    WorkingDirectory=/home/pi
    StandardOutput=inherit
    StandardError=inherit
    Restart=on-failure
    User=pi

    [Install]
    WantedBy=graphical.target
  1. 使用 sudo systemctl enable openvino-app.service
  2. 激活服务

您可以通过将 enable 更改为 disablestatus

来检查状态或禁用服务

这个解决方案非常适合我的项目,它使用 OpenCV 显示带有叠加层的视频流,并使用 NCS 执行推理。