【发布时间】:2018-10-18 11:59:27
【问题描述】:
我在一个计算机视觉项目上工作了一段时间,在树莓派上使用 opencv,通过 UDP 视频和信息传输到基于桌面 Qt 的应用程序。
最近几天我一直被一个问题困住,我自己无法解决。问题是,我的树莓派 3 上的 opencv 应用程序运行良好,但我需要使用 gstreamer 通过 UDP 将应用程序的输出发送到基于 Qt 的桌面应用程序。
Opencv 通过 videocapture 和 videowriter 接受 gstreamer 管道作为输入和输出,但是为此 opencv 需要在 gstreamer 支持下构建,这就是我面临问题的地方。当我在支持 gstreamer 的树莓派上构建 opencv 3.4.3 时,我不能再使用典型的 Videocapture cap(0) 打开默认摄像头,它就挂在这里。该应用程序不会抛出任何错误或任何东西,它只是不会打开任何东西并保持该状态。我知道问题就在那里,因为我在应用程序上有几条调试消息,并且卡在了这个问题上。除此之外,如果我使用 gstreamer 管道而不是 0(默认相机)作为输入,它可以工作。问题只是默认相机,也许V4l搞砸了我不知道。在终端上单独使用 gstreamer 管道,效果很好。
研究了一下,我意识到我需要的 gst-plugins-bad 使用了一些 opencv 库,我在 nvidia 论坛上看到这正是因为这个而在 jestson 板上造成了一些麻烦,但我没有看到一个明确的解决方案。我不知道 gst-plugins-bad 是否覆盖了我的 opencv 安装,这就是原因(gst-plugins-bad 使用旧版本的 opencv)。无论如何,我尝试在 gst-plugins-bad 之后安装 opencv 3.4.3 也没有运气。就像 V4l 在我的 opencv 3.4.3 版本上无法正常工作。
另一方面,我尝试在我的桌面 ubuntu 18.04 和 gstreamer 1.14.1 上构建 opencv 3.4.3,它可以正常工作,并且可以正常理解 videocapture cap(0),正如预期的那样,我可以毫无问题地运行为树莓派设计的应用程序,甚至在输入和输出中添加 gstreamer 管道,一切正常。我认为 raspberry gstreamer 是 1.10 版。
我即将尝试从源 gstreamer 1.14.1 构建和安装,该源 gstreamer 1.14.1 在我的桌面 Ubuntu 上与我的树莓派上的 opencv 一起工作,但这将是漫长而痛苦的。如果有人能对这里发生的事情有所了解,我将不胜感激。
非常感谢。
【问题讨论】:
标签: opencv raspberry-pi gstreamer opencv3.0