首页 文章

Opencv 3.4.3 gstreamer构建在Raspberry pi 3上,Raspbian延伸不起作用

提问于
浏览
0

我一直在使用覆盆子pi上的opencv进行计算机视觉项目工作一段时间,通过UDP视频和信息传输到基于桌面Qt的应用程序 .

我最近几天遇到了问题,我自己无法解决 . 问题是,我的覆盆子pi 3上的opencv应用程序工作正常,但我需要使用gstreamer通过UDP将应用程序的输出发送到我的桌面基于Qt的应用程序 .

Opencv通过视频捕捉和视频录像机接受gstreamer管道作为输入和输出,但是对于opencv需要使用gstreamer支持构建,这就是我面临问题的地方 . 当我在带有gstreamer支持的覆盆子pi上构建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,它可以正常运行,并且正如预期的那样理解videcapture cap(0),我可以运行用于覆盆子pi的应用程序没有任何问题,甚至添加gstreamer管道输入和输出,一切都好 . 我认为覆盆子gstreamer版本是1.10 .

我即将尝试从我的桌面Ubuntu上的opencv源码gstreamer 1.14.1构建和安装,在我的覆盆子pi上,但这将是漫长而痛苦的 . 如果有人可以对这里发生的事情略微说清楚,我真的很感激 .

非常感谢你 .

1 回答

  • 0

    当我最后一次检查(几年前)时,解决这个问题的最好方法是构建一个“gstreamer插件”......假设你没有使用专有软件(gstreamer是GPL) .

    正如您所提到的,gstreamer代码库中至少有一个opencv插件(非常庞大) . 当我最后检查时,它位于gst-plugins-bad存储库中 .

    前进的方法是拉出gstreamer源代码,并自己构建插件 . 一旦你可以自己构建opencv驱动的插件(并使用适当的gst-launch管道进行测试),你就可以开始根据需要进行修改 . 第一步是将该插件中的openCV版本替换为您自己项目中的版本 . 第二步可能是使所有加速工作(如TBB,cuda等,取决于您的平台) .

    之后,您可以将项目推送到插件中 . 这样做的好处是,您可以将项目设置为真正高效的多媒体框架 . 你也可以很容易地在gstreamer的IRC Channels 上获得这方面的帮助,这些开发者“活着”(在Freenode上,在#gstreamer中) .

    如果你不把你的项目作为gstreamer插件,那么唯一的其他选项(我最后检查过)是使用gstreamer的appsourceappsink插件 . 这些可能是openCV在引擎盖下使用的,如果这些天有支持的话 . 我希望gstreamer的版本在这里很重要,所以请查看openCV文档,了解他们为它构建的gstreamer版本 .

    但是,请考虑将其作为gstreamer插件 . 这是一个非常酷的世界进入,许多开发人员可能会帮助你在IRC Channels 上再次....再次:这是我最后一次检查... ...几年前

相关问题