如何为 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-dev
和libopencv-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 才能在 OpenCV 中使用 Gstreamer