我已经使用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(薛定谔的猫)作为操作系统,我希望我的问题细节清晰,并希望社区能给我一个好的回应。
问候 Ujjwal
CodecID
更改为AVCodecID
)可能会在你的情况下导致更多错误。请看下面的解决方案;我曾经遇到过和你一样的问题。 - Ulrich Stern