Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)

1.opencv配置使用问题

        opencv在cmake的时候有两个问题,ippicv长时间卡住下载失败,ffmpeg不会卡住但是也不会配置成功。所以这两个包只能手动下载安装。

        ippicv是什么

        OpenCV设计用于高效的计算,十分强调实时应用的开发。它由C++语言编写并进行了深度优化,从而可以享受多线程的优势,如果希望得到更多在英特尔架构上的自动优化,可以购买英特尔的集成性能基元(IPP)库,该库包含了许多算法领域的底层优化程序。在库安装完毕的情况下OpenCV在运行的时候会自动调用合适的IPP库。从OpenCV3.0开始,英特尔许可OpenCV研发团队和OpenCV社区拥有一个免费的IPP库的字库(称IPPICV),该子库默认集成在OpenCV中并在运算时发挥效用。

        所以ippicv主要是在英特尔架构上有优化加成,如果不是,cmake等待下载失败也是能用的。

        ffmpeg是什么

        opencv是计算机视觉的库,ffmpeg是一个处理媒体流(视频、音频)的开源软件。当然。如果你下载的是完整的ffmpeg的构建包,那么里面的源代码也可以直接拿来当作处理媒体流的API。opencv中嵌入ffmpeg是因为opencv处理媒体流时需要ffmpeg的编解码和一系列IO函数进行操作,最典型的地方就在于VideoWriter这个类,他需要调用ffmpeg的视频流IO函数才能将视频写入本地。

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第1张图片

这是opencv支持的编码格式,最好是安装,不然很多格式视频就不能处理。

2.ippicv手动下载

2.1 根据opencv版本下载,opencv-3.4.1/3rdparty/ippicv/ippicv.cmake查看版本

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第2张图片

 下载地址:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv

按版本切换分支。比如:ippicv_2017u3_lnx_intel64_general_20170822.tgz

 2.2 修改opencv-3.4.1/3rdparty/ippicv/ippicv.cmake文件的下载地址改为本地路径,47行 链接改成文件路径 "file:///home/downloads/"

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第3张图片

        ippicv就配置好了。cmake时候就会读取本地文件。

3.ffmpeg下载,编译,安装

3.1  同样进入 opencv-3.4.1/3rdparty/ffmpeg/ffmpeg.cmake  查看版本

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第4张图片

 下载地址:Branches · opencv/opencv_3rdparty · GitHub

 ffmpeg/master_20180220_src/sources/build/ffmpeg 里面的 

3.2 解压后就是可编译的源码,编译之前先下载安装所需要的库,避免一些编译或者使用的错误。

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

 3.3 进入解压目录下,配置configure文件,--prefix=/usr/local/ffmpeg 是设置ffmpeg安装目录

 ./configure --enable-shared --disable-static --disable-x86asm --prefix=/usr/local/ffmpeg

3.4 make编译源码 

make -j16

3.5 make install 安装 ffmpeg 到之前配置的安装目录。 

sudo make install

3.6 安装完目录

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第5张图片

3.7 配置使用环境,

sudo vim /etc/ld.so.conf

/usr/local/ffmpeg

/usr/local/ffmpeg/lib

sudo ldconfig

sudo vim /etc/profile

export PATH="/usr/local/ffmpeg/bin:$PATH"

source /etc/profile

3.8 确认是否安装成功 输入 指令 ffmpeg

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第6张图片

 4 ffmpeg 也可以直接在线安装

sudo apt-get install ffmpeg 

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第7张图片

 5 opencv 下载,编译,安装

 5.1 下载地址 Releases - OpenCV  这里选择 opencv-3.4.1

解压后目录下新建一个build文件夹用于编译。

        编译之前先安装cmake和一些依赖库

        sudo apt-get cmake

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

        进入build文件夹 执行 cmake 编译配置文件, 生成opencv.pc文件 和 开启ffmpeg功能

cmake -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_FFMPEG=ON ..

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第8张图片

ffmpeg 已经开启。 

 5.2 make 编译源码

make -j16

5.3 make install 安装 

sudo make install

 opencv会安装到 /usr/local 目录下

5.4 添加环境

sudo vim /etc/ld.so.conf

/usr/local/lib

sudo ldconfig

6 Qt添加opencv 库和头文件

INCLUDEPATH += /usr/local/include/opencv\
                /usr/local/include/opencv2\

LIBS+= /usr/local/lib/libopencv_calib3d.so
LIBS+=/usr/local/lib/libopencv_core.so
LIBS+=/usr/local/lib/libopencv_dnn.so
LIBS+=/usr/local/lib/libopencv_features2d.so
LIBS+=/usr/local/lib/libopencv_flann.so
LIBS+=/usr/local/lib/libopencv_highgui.so
LIBS+=/usr/local/lib/libopencv_imgcodecs.so
LIBS+=/usr/local/lib/libopencv_imgproc.so
LIBS+=/usr/local/lib/libopencv_ml.so
LIBS+=/usr/local/lib/libopencv_objdetect.so
LIBS+=/usr/local/lib/libopencv_photo.so
LIBS+=/usr/local/lib/libopencv_shape.so
LIBS+=/usr/local/lib/libopencv_stitching.so
LIBS+=/usr/local/lib/libopencv_superres.so
LIBS+=/usr/local/lib/libopencv_videoio.so
LIBS+=/usr/local/lib/libopencv_video.so

7 opencv3.4 版本 打开视频文件报错问题

Error: OpenCV(3.4.1) Error: Assertion failed (chunk.m_size <= 0xFFFF) in  
cv::AVIReadContainer::readFrame, file D:\Build\OpenCV\opencv-  
3.4.1\modules\videoio\src\container_avi.cpp, line 514

问题原因:源码文件modules/videoio/src/container_avi.cpp中 514行设置的视频容量上限值小了,我们设置一个更大的值。

CV_Assert(chunk.m_size <= 0xFFFF);改成CV_Assert(chunk.m_size <= 67108864);

67108864 这个值是opencv 高版本中官方设置的值,但是低版本中官方并没有修复。
然后重新编译 -》重新安装

Linux下Qt配置opencv环境(ippicv,ffmpeg手动配置)_第9张图片

你可能感兴趣的:(qt,opencv,ffmpeg)