我过去在Windows应用程序中使用过OpenCv,在这种情况下,应用程序将作为Windows服务构建和安装,以便可以将其设置为自动启动并开始运行。差异是我用编译语言完成的,我们在Windows上。
现在,我正在将应用程序移植到Linux / Raspberry Pi上运行。该应用程序只是获取视频源,使用OpenCv进行一些对象检测,然后通过HTTP web api发送结果。
在我的问题之前的第一条评论(我仍然熟悉这个设置)似乎Python是迄今为止所有这一切的首选语言。然而,最终目标是让这个设备无头(没有监视器或输入设备,就像物联网设备一样),所以我不需要或更好,不能打开控制台并输入命令。
那么,对于这个问题,Raspberry Pi上的Windows服务相当于什么,以便我的应用程序只在启动时启动并在设备启动时运行?主观跟进问题是考虑到我上面描述的所有内容,Python仍然是一个不错的选择,或者我会更好地在c或c ++中完成一个完整的编译应用程序?
谢谢!
答案 0 :(得分:1)
如果您正在使用Raspbian,那么我会说最简单的工具il systemd(守护进程)和systemctl(shell命令)。
为了将你的python脚本作为一个守护进程运行(一个守护进程是Windows调用的#34; Service")是创建一个名为.service的配置文件并将其放在/ etc / systemd / system路径中
要了解如何配置文件,您可以采用以下示例:
[Unit]
Description=Your service name
[Service]
ExecStart=python <path to python script>
StandardOutput=null
[Install]
WantedBy=multi-user.target
Alias=this_script_name>.script
希望它有所帮助!
答案 1 :(得分:0)
查看主管:http://supervisord.org/。它应该在启动时运行程序并在崩溃等情况下重新启动时执行您需要做的事情。
我对OpenCV没有任何经验,但像Flask(http://flask.pocoo.org/)这样的网络应用框架可以很容易地用最少的代码公开HTTP API。
祝你好运!