3

我正在使用运行 Raspbian 10 (Buster) 的 Raspberry Pi 3 Model B Rev 1.2。我想在启动时运行一个 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: No module named 'openvino'。我猜它只在我从终端运行它时才有效,因为我的 bash.rc 每次都设置 OpenVINO 环境。

我究竟做错了什么?有没有更好的方法在 Buster 上做到这一点?

4

2 回答 2

1

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

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

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

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

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

于 2020-02-28T07:31:03.907 回答
1

感谢英特尔的 Mauricio.R,我能够找到合适的解决方案。

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

  2. 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

enable您可以通过更改为disable或来检查状态或禁用服务status

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

于 2020-03-12T04:07:03.067 回答