在Ubuntu 14.10中安装OpenCV

时间:2014-10-27 16:47:34

标签: opencv ubuntu ubuntu-14.10

我试图根据instruction在Ubuntu 14.10中安装OpenCV。 我安装了所有提到的依赖项,但是当我尝试运行make时,我遇到了这样的错误:

/home/ilia/opencv-2.4.8/modules/highgui/src/ffmpeg_codecs.hpp:114:7: error: ‘CODEC_ID_H261’ was not declared in this scope
 { CODEC_ID_H261, MKTAG('H', '2', '6', '1') }
正如我所想,

适用于所有编解码器。 而这些错误:

    In file included from /home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg.cpp:45:0:
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘double CvCapture_FFMPEG::getProperty(int)’:
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp:773:33: error: ‘AVStream’ has no member named ‘r_frame_rate’
         return av_q2d(video_st->r_frame_rate);
                                 ^
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘double CvCapture_FFMPEG::get_fps()’:
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp:820:49: error: ‘AVStream’ has no member named ‘r_frame_rate’
     double fps = r2d(ic->streams[video_stream]->r_frame_rate);
                                                 ^
In file included from /home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg.cpp:45:0:
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘int icv_av_write_frame_FFMPEG(AVFormatContext*, AVStream*, uint8_t*, uint32_t, AVFrame*)’:
/home/ilia/opencv-2.4.8/modules/highgui/src/cap_ffmpeg_impl.hpp:1236:72: error: ‘avcodec_encode_video’ was not declared in this scope
         out_size = avcodec_encode_video(c, outbuf, outbuf_size, picture);
                                                                        ^    

看起来它找不到一些头文件,但我安装了所有必需的开发包 libswscale-dev,libavdevice-dev,libavfilter-dev,libavformat-dev,libavcodec-dev。我该怎么做才能解决这些问题?

3 个答案:

答案 0 :(得分:16)

在大多数情况下,从Ubuntu存储库安装OpenCV是一个不错的选择,但有时您需要自己从源代码构建OpenCV。

例如,如果您需要OpenCV的非自由功能,或者想要为此项目做贡献(您应该使用最新版本来创建拉取请求),或者想要更改某些内容(是的,OpenCV也可以包含错误。)

可能的解决方案是构建ffmpeg(它相当简单) - 我真的不明白为什么Debian / Ubuntu更喜欢libav而无法替代。

要安装ffmpeg,您应该从official site下载其源代码或克隆GIT存储库(git://source.ffmpeg.org/ffmpeg.git),然后输入源目录并运行

  

./ configure --enable-shared --disable-static
  使
  sudo make install

您还可以将其他参数添加到configure。 您也可以构建静态库,但OpenCV不能使用静态ffmpeg库构建(现在我不知道为什么)。

在此之后,您可以从OpenCV site下载OpenCV源代码或克隆GitHub存储库(OpenCV repository),创建构建文件夹并从中运行以下内容:

  

cmake PATH_TO_SOURCES -DCMAKE_BUILD_TYPE =发布
  使
  sudo make install

当然,PATH_TO_SOURCES必须是OpenCV来源的实际路径。

完成这些步骤后,您可以在系统中使用最新的OpenCV版本。

答案 1 :(得分:3)

除非您有特殊原因,否则我建议安装已存在于Ubuntu存储库中的OpenCV:sudo apt-get install libopencv-dev

对于视频编解码器,我建议只是尝试安装所有与ffmpeg和gstreamer相关的编解码器包。

答案 2 :(得分:3)

您可以尝试在没有ffmpeg的情况下构建:

cmake -DCMAKE_BUILD_TYPE=RELEASE -DWITH_FFMPEG=OFF ..
make
sudo make install