OpenCV 3.0.0在使用FFMPEG时出错
OpenCV 3.0.0 make error with FFMPEG
我已经使用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(薛定谔猫)作为操作系统,我希望我的问题的细节是清楚的,我希望社区能给我一个好的答复。
的问候放进
我也遇到了这个问题,试图在Ubuntu 12.04上构建OpenCV 3.0.0。这个问题似乎是OpenCV的一个bug。我编辑了opencv-3.0.0/modules/video/src/cap_ffmpeg_impl.hpp,在所有地方用CV_CODEC_ID
替换AVCodecID
,但#define
-在第1174行(可选),1546和1556 -并且构建工作。
有关更多详细信息,请参阅我关于OpenCV问题跟踪器的帖子。在我的帖子作为此提交的一部分之前,这个错误已经在OpenCV主分支上修复了。
假设你不使用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 ..
将此标志添加到mix -DWITH_FFMPEG=0中以不编译FFMPEG部分
此版本支持ffmpeg
conda install --channel conda-forge
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 从R调用C++函数并对其进行集成时出错
- 使用 FFMPEG 将每个输入图像转换为 H264 编译时出错,该图像在 MevisLab 中运行的 Visual St
- 从UDP流读取时,ffmpeg出错
- OpenCV 3.0.0在使用FFMPEG时出错