Запуск скрипта OpenVINO Python при загрузке для Raspberry PI
Я использую Raspberry Pi 3 Model B Rev 1.2 под управлением Raspbian 10 (Buster). Я хочу запустить скрипт python при запуске, который использует OpenVINO и OpenCV для обнаружения объектов и отображения потока с веб-камеры.
Я создал сценарий оболочки 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 каждый раз настраивает env OpenVINO.
Что я делаю неправильно? Есть ли лучший способ сделать это на Buster?
2 ответа
Благодаря Mauricio.R из Intel я смог найти подходящее решение.
- Создайте скрипт, который инициализирует OpenVINO и запускает мой скрипт python, используя
nano ~/openvino-app-script
с содержанием:
#!/bin/bash
source /opt/intel/openvino/bin/setupvars.sh
/usr/bin/python3 /path/to/script/run.py
Измените разрешения и владельца сценария bash с помощью
chmod u+x ~/openvino-app-script
. Вы должны убедиться, что этот сценарий работает, запустив его с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.
Мне не удалось решить мою конкретную проблему, но мне удалось найти способ запустить мой скрипт при загрузке.
Я добавил следующие строки в конец моего.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 для чего-то еще. Любой совет все равно будет оценен