我一直在使用OpenCV。但是我最近将我的系统更改为我没有任何管理员权限的群集。问题是这样的:
在我的主文件夹中,我安装了FFMPEG(ffmpeg网站上提供的最新稳定版本)。我在$ HOME中安装了它,因此在$ HOME / lib中安装了库文件。有关更多信息,我使用以下选项编译了FFMPEG:
./configure --prefix=$HOME --enable-shared --enable-pic
然后我下载了最新的稳定版OpenCV 3.0.0并使用ccmake进行了配置。当我尝试make -j8
时,它会给我以下错误。
Scanning dependencies of target opencv_videoio
[ 63%] [ 63%] [ 63%] [ 63%] [ 63%] [ 63%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_decoder.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_images.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_v4l.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_encoder.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o
In file included from /home/uujjwal/libraries/opencv-nogpu/opencv-3.0.0/modules/videoio/src/cap_ffmpeg.cpp:45:0:
/home/uujjwal/libraries/opencv-nogpu/opencv-3.0.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1546:71: error: use of enum 'AVCodecID' without previous declaration
/home/uujjwal/libraries/opencv-nogpu/opencv-3.0.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1556:83: error: use of enum 'AVCodecID' without previous declaration
make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
然而,如果没有ffmpeg支持,它可以正常工作。但是由于我的工作性质,我需要ffmpeg支持。
在尝试解决问题时,我尝试安装OpenCV 2.4.11,但它也给出了此错误。最新的GIT版本不会给我这个错误,而是一个错误,其中一部分就像这样
Linking CXX shared library ../../lib/libopencv_highgui.so /usr/bin/ld: /home/matheus/ffmpeg_build/lib/../lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used
我已将其他未解决的问题在线粘贴上述错误,因此文件夹名称不同,但重定位错误完全相同。
在尝试解决问题时,我搜索并找到以下链接http://answers.opencv.org/question/12597/build-problems-for-opencv-241-with-ubuntu-1204-lts/
然而,其中一个答案提到改变cap_ffmpeg_impl.hpp文件中的一些行。我尝试过这样做,但要么我无法正确地做到这一点,要么出现其他问题并且无法正常工作。没有提到确切的行号和确切的更改,所以我很难改变事情并确定。
我使用Fedora 19(Schrodinger Cat)作为操作系统我希望我的问题的细节是清楚的,我希望社区能够给我一个良好的回应。
此致 Ujjwal
答案 0 :(得分:10)
我试图在Ubuntu 12.04上构建OpenCV 3.0.0。问题似乎是OpenCV中的一个错误。我编辑了opencv-3.0.0 / modules / videoio / src / cap_ffmpeg_impl.hpp,在所有地方AVCodecID
替换了CV_CODEC_ID
,但#define
- 在第1174行(可选),1546 ,和1556 - 并且构建工作。
有关详细信息,请参阅OpenCV问题跟踪器上的post。作为this提交的一部分,我的帖子之前已在OpenCV主分支上修复了该错误。
答案 1 :(得分:1)
假设你没有在OpenCV中使用FFMPEG,你可以禁用它被编译:
当你运行Cmake时 即当你这样做时:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON2_PACKAGES_PATH=~/.virtualenvs/cv/lib/python2.7/site-packages \
-D PYTHON2_LIBRARY=/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/bin \
-D PYTHON2_INCLUDE_DIR=/usr/local/Frameworks/Python.framework/Headers \
-D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..
将此标志添加到混合-DWITH_FFMPEG = 0以不编译FFMPEG部分
答案 2 :(得分:0)
此版本支持ffmpeg
conda install --channel conda-forge