用GStreamer编译Opencv,cmake无法找到GStreamer

19

我想构建支持GStreamer的OpenCV。

我按照这个指南从源代码中构建了GStreamer(版本1.8.1):http://kacianka.at/?p=145,我在我的主目录下有一个名为'gstreamer_build'的文件夹,其中包含具有以下名称的'bin'文件夹:

gst-device-monitor-1.0 gst-discoverer-1.0 gst-inspect-1.0 gst-launch-1.0 gst-play-1.0 gst-stats-1.0 gst-typefind-1.0 orc-bugreport orcc

我已将此路径添加到环境变量PATH中。

当我使用如下的cmake命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D BUILD_opencv_python3=ON -D WITH_GSTREAMER=ON -D WITH_FFMPEG=OFF ..

我获得了以下输出,明确表明找不到GStreamer:

-- checking for module 'gstreamer-base-1.0'
--   package 'gstreamer-base-1.0' not found
-- checking for module 'gstreamer-video-1.0'
--   package 'gstreamer-video-1.0' not found
-- checking for module 'gstreamer-app-1.0'
--   package 'gstreamer-app-1.0' not found
-- checking for module 'gstreamer-riff-1.0'
--   package 'gstreamer-riff-1.0' not found
-- checking for module 'gstreamer-pbutils-1.0'
--   package 'gstreamer-pbutils-1.0' not found
-- checking for module 'gstreamer-base-0.10'
--   package 'gstreamer-base-0.10' not found
-- checking for module 'gstreamer-video-0.10'
--   package 'gstreamer-video-0.10' not found
-- checking for module 'gstreamer-app-0.10'
--   package 'gstreamer-app-0.10' not found
-- checking for module 'gstreamer-riff-0.10'
--   package 'gstreamer-riff-0.10' not found
-- checking for module 'gstreamer-pbutils-0.10'
--   package 'gstreamer-pbutils-0.10' not found

和这个:

Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  NO
--     FFMPEG:                      NO
--       codec:                     NO
--       format:                    NO
--       util:                      NO
--       swscale:                   NO
--       resample:                  NO
--       gentoo-style:              NO
--     GStreamer:                   NO
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     OpenNI2:                     NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    Using libv4l1 (ver 1.0.1) / libv4l2 (ver 1.0.1)
--     XIMEA:                       NO
--     Xine:                        NO
--     gPhoto2:                     NO

有人能帮我解决这个问题吗?

4个回答

37

我有同样的问题。

gstreamer-base对应于libgstbase-1.0.so(或libgstbase-0.10.so),可以在软件包libgstreamer1.0-0(或 libgstreamer0.10-0, 根据情况而定)中找到。下面,我们安装"-dev"软件包。

其他库(libgst-video、libgst-app、libgst-riff、libgst-pbutils)可以在软件包libgstreamer-plugins-base1.0-dev中找到(再次替换您希望使用的版本,即v0.1或v1.0)。

因此,要安装缺少的依赖项,请使用以下命令:

sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

重复执行cmake命令,可能需要在之前清空构建目录的内容。


1
兄弟你真的帮我省了很多时间!感谢你分享这个。 - Georgi Angelov
你如何使用yum来完成这个任务?我尝试过了,但是似乎yum无法访问libgstreamer所在的任何存储库。 - Paul
1
@DanO - 尽管这篇文章的发布时间已经是三年前了,但它仍然有效! - Craig S. Anderson
也许您知道如何安装libavresample以在所有行中获得YES? - A.Ametov

5
如果您只是开发一个Gstreamer应用程序,则以下方法对我有用。
# GStreamer CMake building
cmake_minimum_required(VERSION 3.3)
project(GStreamerHello)

set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON)
find_package(PkgConfig REQUIRED)
if ( NOT (PKGCONFIG_FOUND))
      message(FATAL_ERROR "Please Install PPkgConfig: CMake will Exit")
endif()
pkg_check_modules(GST REQUIRED gstreamer-1.0>=1.8)
if ( NOT (GST_FOUND))
      message(FATAL_ERROR "Please Install Gstreamer Dev: CMake will Exit")
endif()
set(ENV{PKG_CONFIG_PATH})

include_directories("${GST_INCLUDE_DIRS}")

link_libraries(${GST_LIBRARIES})

add_executable(gstreamerSrvc  src/hello_gstreamer.cc)
add_dependencies(gstreamerSrvc vsphere_header )
target_link_libraries(gstreamerSrvc ${GST_LIBRARIES}  )

注意 - 如果你需要一个适用于GStreamer的开发者Docker,则可以在下面找到;对于你的问题,它包括了与OpenCV编译相关的部分; 更多详情请参见https://medium.com/techlogs/compiling-opencv-for-cuda-for-yolo-and-other-cnn-libraries-9ce427c00ff8
FROM nvidia/cuda
# This is a dev image, needed to compile OpenCV with CUDA
# Install  Gstreamer and OpenCV Pre-requisite libs
RUN  apt-get update -y && apt-get install -y \
            libgstreamer1.0-0 \
            gstreamer1.0-plugins-base \
            gstreamer1.0-plugins-good \
            gstreamer1.0-plugins-bad \
            gstreamer1.0-plugins-ugly \
            gstreamer1.0-libav \
            gstreamer1.0-doc \
            gstreamer1.0-tools \
            libgstreamer1.0-dev \
            libgstreamer-plugins-base1.0-dev
RUN  apt-get update -y && apt-get install -y  pkg-config \
 zlib1g-dev  libwebp-dev \
 libtbb2 libtbb-dev  \
 libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev \
 cmake
RUN apt-get install -y \
  autoconf \
  autotools-dev \
  build-essential \
  gcc \
  git
ENV OPENCV_RELEASE_TAG 3.4.5
RUN git clone https://github.com/opencv/opencv.git /var/local/git/opencv
RUN cd /var/local/git/opencv && \
  git checkout tags/${OPENCV_RELEASE_TAG} 
RUN mkdir -p /var/local/git/opencv/build && \
     cd /var/local/git/opencv/build $$ && \
    cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_PNG=OFF -D \
    BUILD_TIFF=OFF -D BUILD_TBB=OFF -D BUILD_JPEG=ON \
    -D BUILD_JASPER=OFF -D BUILD_ZLIB=ON -D BUILD_EXAMPLES=OFF \
    -D BUILD_opencv_java=OFF -D BUILD_opencv_python2=ON \
    -D BUILD_opencv_python3=OFF -D ENABLE_NEON=OFF -D WITH_OPENCL=OFF \
    -D WITH_OPENMP=OFF -D WITH_FFMPEG=OFF -D WITH_GSTREAMER=ON -D WITH_GSTREAMER_0_10=OFF \
    -D WITH_CUDA=ON -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/ -D WITH_GTK=ON \
    -D WITH_VTK=OFF -D WITH_TBB=ON -D WITH_1394=OFF -D WITH_OPENEXR=OFF \
     -D CUDA_ARCH_BIN=6.0 6.1 7.0 -D CUDA_ARCH_PTX="" -D INSTALL_C_EXAMPLES=OFF -D INSTALL_TESTS=OFF ..
RUN  cd /var/local/git/opencv/build && \ 
      make install
# Install other tools you need for development

4
在Windows上没有“sudo apt install ...”命令。我已经在我的PATH环境变量中设置了所有路径,但仍然遇到了同样的问题。我在设置以下CMake选项后使其工作:

  1. 只将“WITH_GSTREAMER”选项设置为True,“WITH_GSTREAMER_0_10”必须为FALSE
  2. 添加新条目“GSTREAMER_DIR”=(gstreamer的路径) 对于我来说是“C:/gstreamer/1.0/x86_64” 我在这里找到了这个解决方案

我的OpenCV版本:3.4.3


0

添加新条目"GSTREAMER_DIR"=(指向gstreamer的路径)对我有用(WITH_GSTREAMER true)。我的版本中没有WITH_GSTREAMER_0_10


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接