运行 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,我得以找到合适的解决方案。
- 创建一个初始化 OpenVINO 的脚本,并使用
nano ~/openvino-app-script
启动我的 python 脚本,内容为:
#!/bin/bash
source /opt/intel/openvino/bin/setupvars.sh
/usr/bin/python3 /path/to/script/run.py
使用 chmod u+x ~/openvino-app-script
更改 bash 脚本的权限和所有权。您应该确保此脚本通过 运行 与 bash ./openvino-app-script
一起工作
使用 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
- 使用
sudo systemctl enable openvino-app.service
激活服务
您可以通过将 enable
更改为 disable
或 status
来检查状态或禁用服务
这个解决方案非常适合我的项目,它使用 OpenCV 显示带有叠加层的视频流,并使用 NCS 执行推理。
我正在使用 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,我得以找到合适的解决方案。
- 创建一个初始化 OpenVINO 的脚本,并使用
nano ~/openvino-app-script
启动我的 python 脚本,内容为:
#!/bin/bash
source /opt/intel/openvino/bin/setupvars.sh
/usr/bin/python3 /path/to/script/run.py
使用
chmod u+x ~/openvino-app-script
更改 bash 脚本的权限和所有权。您应该确保此脚本通过 运行 与bash ./openvino-app-script
一起工作
使用
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
- 使用
sudo systemctl enable openvino-app.service
激活服务
您可以通过将 enable
更改为 disable
或 status
这个解决方案非常适合我的项目,它使用 OpenCV 显示带有叠加层的视频流,并使用 NCS 执行推理。