使用cap_gstreamer错误编译opencv失败

时间:2015-06-01 16:18:32

标签: c++ opencv gstreamer

我正在尝试在Slackware 4.1上编译opencv。但是我每次都遇到以下错误。

In file included from /usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:29:0,
             from /tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp:65:
/usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:35:9: error: 'GstMiniObjectClass' does not name a type
typedef GstMiniObjectClass GstDiscovererStreamInfoClass;

/usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:83:9: error: 'GstMiniObjectClass' does not name a type
typedef GstMiniObjectClass GstDiscovererContainerInfoClass;

/usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:104:9: error: 'GstMiniObjectClass' does not name a type
typedef GstMiniObjectClass GstDiscovererAudioInfoClass;
     ^
/usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:129:9: error: 'GstMiniObjectClass' does not name a type
typedef GstMiniObjectClass GstDiscovererVideoInfoClass;
     ^
/usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:159:9: error: 'GstMiniObjectClass' does not name a type
typedef GstMiniObjectClass GstDiscovererSubtitleInfoClass;
     ^
/usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:202:9: error: 'GstMiniObjectClass' does not name a type
typedef GstMiniObjectClass GstDiscovererInfoClass;
     ^
In file included from /tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp:65:0:
/usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:47:9: error: 'GstMiniObjectClass' does not name a type
typedef GstMiniObjectClass GstEncodingProfileClass;
     ^
/usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:66:9: error: 'GstEncodingProfileClass' does not name a type
typedef GstEncodingProfileClass GstEncodingContainerProfileClass;
     ^
/usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:85:9: error: 'GstEncodingProfileClass' does not name a type
typedef GstEncodingProfileClass GstEncodingVideoProfileClass;
     ^
/usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:104:9: error: 'GstEncodingProfileClass' does not name a type
typedef GstEncodingProfileClass GstEncodingAudioProfileClass;
     ^
/tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp: In member function 'virtual bool CvCapture_GStreamer::grabFrame()':
/tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp:232:57: error: 'gst_app_sink_pull_sample' was not declared in this scope
 sample = gst_app_sink_pull_sample(GST_APP_SINK(sink));
                                                     ^
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_gstreamer.cpp.o] Error 1

编译的配置报告如下:

-- General configuration for OpenCV 2.4.11 =====================================
--   Version control:               unknown
-- 
--   Platform:
--     Host:                        Linux 3.10.17 i686
--     CMake:                       2.8.12
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/gmake
--     Configuration:               Release
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                /usr/bin/c++  (ver 4.8.2)
--     C++ flags (Release):         -O2 -march=i486 -mtune=i686   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -O2 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -O2 -march=i486 -mtune=i686   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -O2 -march=i486 -mtune=i686   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -O2 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -O2 -march=i486 -mtune=i686   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      
--     Linker flags (Debug):        
--     Precompiled headers:         NO
-- 
--   OpenCV modules:
--     To be built:                 core flann imgproc highgui features2d calib3d ml video legacy objdetect photo gpu ocl nonfree contrib stitching superres ts videostab
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 androidcamera dynamicuda java python viz
-- 
--   GUI: 
--     QT 4.x:                      YES (ver 4.8.5 EDITION = OpenSource)
--     QT OpenGL support:           NO
--     OpenGL support:              NO
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/libz.so (ver 1.2.8)
--     JPEG:                        /usr/lib/libjpeg.so (ver 80)
--     PNG:                         /usr/lib/libpng.so (ver 1.4.12)
--     TIFF:                        /usr/lib/libtiff.so (ver 42 - 3.9.7)
--     JPEG 2000:                   build (ver 1.900.1)
--     OpenEXR:                     build (ver 1.7.1)
-- 
--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  YES (ver 2.2.2)
--     FFMPEG:                      NO
--       codec:                     NO
--       format:                    NO
--       util:                      NO
--       swscale:                   NO
--       gentoo-style:              NO
--     GStreamer:                   
--       base:                      YES (ver 0.10.36)
--       video:                     YES (ver 0.10.36)
--       app:                       YES (ver 0.10.36)
--       riff:                      YES (ver 0.10.36)
--       pbutils:                   YES (ver 0.10.36)
--     OpenNI:                      NO
--     OpenNI PrimeSensor Modules:  NO
--     PvAPI:                       NO
--     GigEVisionSDK:               NO
--     UniCap:                      NO
--     UniCap ucil:                 NO
--     V4L/V4L2:                    Using libv4l1 (ver 0.9.5) / libv4l2 (ver 0.9.5)
--     XIMEA:                       NO
--     Xine:                        NO
-- 
--   Other third-party libraries:
--     Use IPP:                     NO
--     Use Eigen:                   NO
--     Use TBB:                     NO
--     Use OpenMP:                  NO
--     Use GCD                      NO
--     Use Concurrency              NO
--     Use C=:                      NO
--     Use Cuda:                    NO
--     Use OpenCL:                  YES
-- 
--   OpenCL:
--     Version:                     dynamic
--     Include path:                /tmp/SBo/opencv-2.4.11/3rdparty/include/opencl/1.2
--     Use AMD FFT:                 NO
--     Use AMD BLAS:                NO
-- 
--   Python:
--     Interpreter:                 /usr/bin/python2 (ver 2.7.5)
-- 
--   Java:
--     ant:                         NO
--     JNI:                         /usr/lib/java/include /usr/lib/java/include/linux /usr/lib/java/include
--     Java tests:                  NO
-- 
--   Documentation:
--     Build Documentation:         NO
--     Sphinx:                      NO
--     PdfLaTeX compiler:           /usr/share/texmf/bin/pdflatex
--     Doxygen:                     YES (/usr/bin/doxygen)
-- 
--   Tests and samples:
--     Tests:                       YES
--     Performance tests:           YES
--     C/C++ Examples:              NO
-- 
--   Install path:                  /usr
-- 
--   cvconfig.h is in:              /tmp/SBo/opencv-2.4.11/build

我查看了以下链接中的opencv要求

http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation

我需要ffmpeg或libav包,这是我在标准slackware 14.1包下找不到的。但我完全安装了gstreamer(gstreamer,gst-pluigns-base,以及好),我上面遇到的错误肯定与gstreamer有关。

4 个答案:

答案 0 :(得分:10)

我通过安装var_dump(array_filter($medium['properties']['keywords']), $medium['properties']['keywords']); 解决了这个问题。在此之前,CMake检测到GStreamer版本0.10.36,之后是1.4.5。

答案 1 :(得分:3)

我将WITH_GSTREAMER_0_10设置为ON

后,它对我有用

答案 2 :(得分:1)

我正在使用Ubuntu 12.04,但得到了同样的错误。 使用 -D WITH_GSTREAMER = OFF 参数可以避免这种情况。 建议herehere

然后here他们建议更新gstreamer,但这并没有为我解决。 我仍然希望通过全新安装来验证这一点。

答案 3 :(得分:0)

如果有人仍然有问题, 尝试使用所有软件包正确安装gstreamer1.0

Fedora OS的示例:

dnf install gstreamer1-devel gstreamer1-plugins-base-tools 
gstreamer1-devel-docs gstreamer1-plugins-base-devel 
gstreamer1-plugins-base-devel-docs 
gstreamer1-plugins-good gstreamer1-plugins-good-extras 
gstreamer1-plugins-ugly gstreamer1-plugins-ugly-devel-docs  
gstreamer1-plugins-bad-free gstreamer1-plugins-bad-free-devel
gstreamer1-plugins-bad-free-extras

以下是适用于您系统的综合安装指南:official link.