树莓派开机自启动opencv程序脚本
2021/10/30 22:09:42
本文主要是介绍树莓派开机自启动opencv程序脚本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.制作测试脚本
首先我们需要制作一个脚本来测试自启动是否有效。
pi@raspberry:~ $ nano /home/pi/start.sh
start.sh的内容如下:
/usr/bin/python3 /home/pi/GeometryOperations.py
这里一定要注意使用绝对路径,不然有概率会加载失败。
然后给脚本文件添加执行文件
pi@raspberry:~ $ chmod 777 start.sh
测试一下脚本功能
pi@raspberry:~ $ ./start.sh
如果观察到程序正常运行就可以继续下一步
2.添加自启动
修改rc.local文件
pi@raspberry:~ $ sudo nano /etc/rc.local
在文本中找到exit 0,在此之前添加的代码在启动时都会被执行,在exit 0 之前添加一行代码:
su pi -c “exec /home/pi/start.sh &”
ctrl+o保存,ctrl+x退出,重启。
pi@raspberry:~ $ sudo reboot
重启后程序即可运行。
3.DEBUG
如果重启后树莓派没有任何响应,可以通过systemctl查看一下rc-local的状态
pi@raspberry:~ $ sudo systemctl status rc-local
进去后就可以看到你开机启动后每一步的状态,检查哪里会报错。
4.可能会出现的报错
Process:454 ExecStart=/etc/rc.local start (code=exited,status=1/FAILURE)
这个出错大概是因为脚本文件的原因。
如果仅仅只是启动的话,那么一定要把文件路径写为绝对路径,不然就会报错。
error: (-2:Unspecified error) Can’t initialize GTK backend in function ‘cvInitSystem’
如果开机自启动的程序包含Opencv等具有窗口操作的代码则会报这种错误
原因是由于下面这一句引起
su pi -c “exec /home/pi/start.sh &”
如果你的命令需要长时间运行(例如死循环)或者运行后不能退出,那么你必须确保在命令的最后添加“&”符号让命令运行在其后台
而如果代码中包含类似于如下的窗口界面操作
cv2.namedWindow(‘Cap’)
cv2.imshow(‘Cap’, frame)
就会与后台运作冲突,使GTK的后端不能初始化,引发报错。
解决方法就是把有关于界面及窗口的操作全部删掉,程序即可良好运行啦!
这篇关于树莓派开机自启动opencv程序脚本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享