【发布时间】:2019-06-28 23:04:33
【问题描述】:
我的问题是 Opencv 和 Systemd 一起使用!
我在 Ubuntu 16.0.4 上安装了新的 Opencv 我编写了一个程序来获取相机流并存储一些帧。 它“没有”问题。 但不能通过 Systemd 工作。 systemd 单元处于活动状态(不会失败)但目标文件夹中没有帧存储。
我一步一步地寻找问题,我发现代码在打开相机流时挂起。那是: cap.open("MyIpCameraAddress")
- 我尝试通过 bash 脚本而不是 .但问题存在。
- 我还发现,当我通过 systemd 运行程序时,相对地址不起作用(当我测试打开图片时)
我的 systemd 单元文件:
[单位]
说明= abc
之后=network.target
[服务]
ExecStart= /path/to/executable
重启=始终
[安装]
WantedBy=multi-user.target
也像上面一样测试一个 systemd 单元,但要运行一个 .sh 文件
当我启动我的系统单元时,目标文件夹(期望存储一些帧)会在其上显示一个锁定图标。 但是当直接通过终端运行我的程序时,dest 文件夹上没有任何 锁定图标。
编辑: 我用 Opencv v3.4.3 和 v4.0.1 测试过,结果是一样的。
【问题讨论】:
-
您能发布您的程序的最小版本吗?如果没有该程序,我们需要猜测 systemd 可能会干扰哪些操作。
-
我正在测试一个非常简单的程序,它挂在这个代码上:cap.open("IPadress");
-
和
cap会是VideoCapture对象吗? documentation 声明您需要传递正确的 URL 而不是 IP 地址。 -
您可以尝试将调试器附加到 systemd 启动的进程以查看它究竟挂在哪里,或者在
strace下运行它。