如何为 opencv 安装 gstreamer 1.0 badplugin?

Posted

技术标签:

【中文标题】如何为 opencv 安装 gstreamer 1.0 badplugin?【英文标题】:How to install gstreamer 1.0 badplugin for opencv? 【发布时间】:2019-11-30 17:39:14 【问题描述】:

Ubuntu 18.04 机器上,我尝试在 gstreamer 1.14.5 管道中使用 opencv 4.1.2 facedetect,但不幸的是插件没有安装。

我下载了 gstreamer bad plugin code 并尝试使用介子构建 创建的 so 文件的大小看起来不对。

如何安装 opencv 插件?

(cv) roy@hp:~$ cat /proc/version
Linux version 5.0.0-36-generic (buildd@lgw01-amd64-060) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #39~18.04.1-Ubuntu SMP Tue Nov 12 11:09:50 UTC 2019

(cv) roy@hp:~$ which gst-inspect-1.0 
/usr/bin/gst-inspect-1.0

(cv) roy@hp:~$ gst-inspect-1.0 --version
gst-inspect-1.0 version 1.14.5
GStreamer 1.14.5
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0

(cv) roy@hp:~$ gst-inspect-1.0 facedetect
No such element or plugin 'facedetect'

(cv) roy@hp:~$ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.1.2
>>> exit()

(cv) roy@hp:~$ ls -l /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopen*
-rw-r--r-- 1 root root  39752 Jul  4 02:16 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopenal.so
-rw-r--r-- 1 root root  23376 Jul  4 02:16 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopenexr.so
-rw-r--r-- 1 root root  81896 Jul  4 02:16 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopenglmixers.so
-rw-r--r-- 1 root root 253048 Jul  3 09:19 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopengl.so
-rw-r--r-- 1 root root  48328 Jul  4 02:16 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopenjpeg.so
-rw-r--r-- 1 root root  27368 Jul  4 02:16 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopenmpt.so

(cv) roy@hp:~$ ls -l gst-plugins-bad-1.14.5/gst-libs/gst/opencv/
total 84
-rw-r--r-- 1 roy roy  6395 Mar 23  2018 gstopencvutils.cpp
-rw-r--r-- 1 roy roy  1700 Mar 23  2018 gstopencvutils.h
-rw-r--r-- 1 roy roy  8871 Mar 23  2018 gstopencvvideofilter.cpp
-rw-r--r-- 1 roy roy  4559 Mar 23  2018 gstopencvvideofilter.h
-rw-r--r-- 1 roy roy   746 Mar 23  2018 Makefile.am
-rw-r--r-- 1 roy roy 38511 May 29  2019 Makefile.in
-rw-r--r-- 1 roy roy   775 Mar 23  2018 meson.build
-rw-r--r-- 1 roy roy  1082 Mar 23  2018 opencv-prelude.h

(cv) roy@hp:~$ ls -l gst-plugins-bad-1.14.5/build/gst-libs/gst/opencv/
total 0
lrwxrwxrwx 1 roy roy 21 Nov 30 08:50 libgstopencv-1.0.so -> libgstopencv-1.0.so.0
lrwxrwxrwx 1 roy roy 28 Nov 30 08:50 libgstopencv-1.0.so.0 -> libgstopencv-1.0.so.0.1405.0

(cv) roy@hp:~$ 

【问题讨论】:

【参考方案1】:

请不要弄脏您的 Ubuntu。喜欢在 Ubuntu 中使用任何你喜欢的包管理器。如果您使用apt,只需为您安装现成可用的软件包:

sudo apt install libgstreamer-plugins-bad1.0-dev

【讨论】:

仍然没有运气` (cv) roy@hp:~$ sudo apt install libgstreamer-plugins-bad1.0-dev (cv) roy@hp:~$ gst-inspect-1.0 facedetect 没有这样元素或插件 'facedetect' ` 你安装了libopencv-devlibopencv-objdetect-dev吗? 当我尝试安装时出现错误。 dpkg:错误处理存档/tmp/apt-dpkg-install-DTQL9X/31-libopencv-dev_3.2.0+dfsg-4ubuntu0.1_amd64.deb(--unpack):试图覆盖'/usr/bin/opencv_version',也在包 libopencv 3.3.1-2-gb3f86dcd5 处理时遇到错误:/tmp/apt-dpkg-install-DTQL9X/31-libopencv-dev_3.2.0+dfsg-4ubuntu0.1_amd64.deb E: Sub-process / usr/bin/dpkg 返回错误代码 (1) 看来您安装或构建并安装的不是官方的 Ubuntu opencv 包。您自己承担了风险,现在遇到了问题。【参考方案2】:

我遇到了同样的问题,我的解决方案是,如果你想使用 here 和 here 描述的 GStreamer OpenCV 插件,你需要这样做:

sudo apt install gstreamer1.0-opencv

正如here 解释的那样,那么:

gst-launch-1.0 autovideosrc ! video/x-raw,width=640,height=480 ! videoconvert ! facedetect min-size-width=60 min-size-height=60 profile=/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml ! videoconvert ! xvimagesink

在我的NVIDIA® Jetson Nano™ Developer Kit 中成功工作。

【讨论】:

以上是关于如何为 opencv 安装 gstreamer 1.0 badplugin?的主要内容,如果未能解决你的问题,请参考以下文章

Anaconda:即使安装了opencv也无法导入cv2(如何为python3安装opencv3)

Gstreamer 的 OpenCV 3.0.0 错误

如何安装gstreamer

我是不是需要使用 Gstreamer 构建 OpenCV 才能在 OpenCV 中使用 Gstreamer

如何为 OpenCV 4.0.1 版创建 32 位 dll 文件?

如何结合gstreamer和opencv?