[C++] OpenCV 3.0.0 делает ошибку с FFMPEG


Answers

Предполагая, что вы не используете FFMPEG с OpenCV, вы можете отключить его компиляцию:

Когда вы запускаете 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

Question

Я использовал 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) в качестве операционной системы. Я надеюсь, что детали моего вопроса ясны, и я надеюсь, что сообщество обязало меня с хорошим ответом.

С уважением Уджваль