与GStreamer交叉编译OpenCV

时间:2019-12-01 00:16:48

标签: c++ linux opencv cmake cross-compiling

我正在尝试将Raspberry Pi的OpenStream与GStreamer交叉编译。我在amd64上使用Debian,并已安装dpkg来安装armhf软件包。这是我当前的构建脚本。

PKG_CONFIG_LIBDIR="/usr/local/arm-linux-gnueabihf/lib/pkgconfig"
PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR:/usr/local/lib/arm-linux-gnueabihf/pkgconfig"
PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR:/usr/lib/arm-linux-gnueabihf/pkgconfig"
PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR:/usr/arm-linux-gnueabihf/lib/pkgconfig"
export PKG_CONFIG_LIBDIR

cmake -D CMAKE_BUILD_TYPE=Debug \
    -D PYTHON3_INCLUDE_PATH=/usr/include/python3.7m \
    -D PYTHON3_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
    -D BUILD_opencv_python3=ON \
    -D PYTHON3_CVPY_SUFFIX='.cpython-37m-arm-linux-gnueabihf.so' \
    -D BUILD_DOCS=OFF \
    -D BUILD_EXAMPLES=OFF \
    -D BUILD_TESTS=OFF \
    -D BUILD_PERF_TESTS=OFF \
    -D WITH_GSTREAMER=ON \
    -D WITH_GSTREAMER_0_10=OFF \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D WITH_GTK=OFF \
    -D CPACK_BINARY_DEB=ON \
    -D CPACK_GENERATOR="DEB" \
    -D CPACK_DEBIAN_PACKAGE_MAINTAINER="Steven Spangler" \
    -D CPACK_DEBIAN_PACKAGE_NAME="OpenCV" \
    -D CPACK_DEBIAN_PACKAGE_VERSION="${OPENCV_VERSION}" \
    -D CPACK_DEBIAN_PACKAGE_ARCHITECTURE="armhf" \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D CMAKE_TOOLCHAIN_FILE="../platforms/linux/arm-gnueabi.toolchain.cmake" \
    -B "${CV_DIR}/build/" \
    -S "${CV_DIR}"

对于每个GStreamer组件,我都会收到如下错误:

-- Checking for module 'gstreamer-base-1.0'
--   Found gstreamer-base-1.0, version 1.14.4
CMake Warning at cmake/OpenCVUtils.cmake:784 (message):
  ocv_check_modules(GSTREAMER_base): can't find library 'gstbase-1.0'.
  Specify 'pkgcfg_lib_GSTREAMER_base_gstbase-1.0' manualy
Call Stack (most recent call first):
  modules/videoio/cmake/detect_gstreamer.cmake:85 (ocv_check_modules)
  modules/videoio/cmake/init.cmake:3 (include)
  modules/videoio/cmake/init.cmake:23 (add_backend)
  cmake/OpenCVModule.cmake:313 (include)
  cmake/OpenCVModule.cmake:376 (_add_modules_1)
  modules/CMakeLists.txt:7 (ocv_glob_modules)

运行pkg-config gstreamer-base-1.0 --libs --cflags后,我得到-pthread -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0。如果再执行pkg-config gstbase-1.0 --libs --cflags,它将找不到它。

尽管如此,CMake仍然声称能够找到GStreamer,并且确实可以成功编译。但是,当您尝试在目标系统上使用OpenCV的GStreamer组件时,它将永久挂起。

Here is the full build log.谢谢!

0 个答案:

没有答案
相关问题