许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  CentOS 8安装OpenCV+FFmpeg(支持解码器解码视频)

CentOS 8安装OpenCV+FFmpeg(支持解码器解码视频)

阅读数 6
点赞 0
article_banner

安装步骤:


1、更新软件仓库,使用国内源:在CentOS中配置使用阿里的开源镜像

1)备份原来的文件/etc/yum.repos.d

2)到阿里开源镜像站点下载系统对应版本的repo文件:

#CentOS8[root@VM-0-8-centos yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-8.repo

vim Centos-8.repo将里面的所有enabled=0改为enabled=1,即使用里面的所有软件仓库。

3)配置清华源(可以加上多几个源,如清华源、网易源等):

$ vi /etc/yum.repos.d/CentOS-cnnic.repo #清华源如下配置,这里centosplus-cnnic和PowerTools-cnnic中的enabled根据需求打开;[BaseOS-cnnic]name=CentOS-$releasever-Base-cnnicbaseurl=https://mirrors.cnnic.cn/centos/$releasever/BaseOS/$basearch/os/gpgcheck=1enabled=1gpgkey=https://mirrors.cnnic.cn/centos/RPM-GPG-KEY-CentOS-Official [AppStream-cnnic]name=CentOS-$releasever-AppStream-cnnicbaseurl=https://mirrors.cnnic.cn/centos/$releasever/AppStream/$basearch/os/gpgcheck=1enabled=1gpgkey=https://mirrors.cnnic.cn/centos/RPM-GPG-KEY-CentOS-Official [extras-cnnic]name=CentOS-$releasever-Extras-cnnicbaseurl=https://mirrors.cnnic.cn/centos/$releasever/extras/$basearch/os/gpgcheck=1enabled=1gpgkey=https://mirrors.cnnic.cn/centos/RPM-GPG-KEY-CentOS-Official [centosplus-cnnic]name=CentOS-$releasever-Plus-cnnicbaseurl=https://mirrors.cnnic.cn/centos/$releasever/centosplus/$basearch/os/gpgcheck=1enabled=0gpgkey=https://mirrors.cnnic.cn/centos/RPM-GPG-KEY-CentOS-Official [PowerTools-cnnic]name=CentOS-$releasever-PowerTools-cnnicbaseurl=https://mirrors.cnnic.cn/centos/$releasever/PowerTools/$basearch/os/gpgcheck=1enabled=0gpgkey=https://mirrors.cnnic.cn/centos/RPM-GPG-KEY-CentOS-Official

4)清除系统yum缓存,并重新生成新的yum缓存

dnf -y install epel-releasednf clean alldnf makecachednf repolist

如果只加了阿里源,执行dnf repolist出现结果如下:

2、安装ffmpeg

参考:linux下成功安装调用ffmpeg记录_蠢萌-CSDN博客_ffmpeg linux

3、编译安装opencv

1)安装必需和可依赖项

sudo dnf install epel-release git gcc gcc-c++ cmake3 qt5-qtbase-devel     python3 python3-devel python3-pip cmake python3-devel python3-numpy     gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel     libjpeg-turbo-devel libtiff-devel tbb-devel libv4l-devel     eigen3-devel freeglut-devel mesa-libGL mesa-libGL-devel     boost boost-thread boost-devel gstreamer1-plugins-base

2)下载OpenCV源码和OpenCV-Contrib源码

新建一个文件夹存放下载的opencv文件:mkdir ~/opencv_build cd ~/opencv_buildgit clone https://github.com/opencv/opencv.gitgit clone https://github.com/opencv/opencv_contrib.git

我这里安装的是opencv 4.1.0及opencv_contrib 4.1.0,提供一个快速下载:点这里


3)开始编译

创建一个临时构建目录build:mkdir build

进入build目录:cd ./build并执行

cmake3 -D CMAKE_BUILD_TYPE=RELEASE     -D CMAKE_INSTALL_PREFIX=/usr/local     -D INSTALL_C_EXAMPLES=ON     -D INSTALL_PYTHON_EXAMPLES=ON     -D OPENCV_GENERATE_PKGCONFIG=ON     -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules     -D BUILD_EXAMPLES=ON -D WITH_FFMPEG=ON ..


特别注意的是,在这个过程中会出现一些错误,严格的说并不算是错误,只是在配置的过程中会联网下载一些依赖库,但由于opencv版本的问题,这些依赖库的地址可能发生了改变,而旧的opencv编译配置代码中还是用的旧地址,这就会导致下载依赖库不成功,导致有些功能不能被安装,但这些问题并不会在配置完的最后行显示出来,而是在配置(指的是运行上述的cmake3.....)时显示输出:如,

下载ippicv超时:

这是网络无法下载的原因,可以采用如下方法解决:

<1>.进入源码目录 opencv-3.4.8/3rdparty/ippicv

<2>.手动修改ippicv.cmake文件,删掉下载链接,指向ippicv_2019_lnx_intel64_general_20180723.tgz所在目录,该文件下载地址 由于网络下载很慢,可以从这里下载链接:点这里

将上图链接换成如下,注意不要加文件名xxxxx.tgz,只需指定目录

"file:///root/kkk/"

重新执行上面的指令:camke3 -D..................

下载xxx.i超时:

可以查看 build 文件夹下的日志文件 CMakeDownloadLog.txt,在日志文件CMakeDownloadLog.txt中就有说明失败的对应xxx.i的下载地址,复制地址到浏览器打开,再复制里面的内容到新建文件,保存并命名为同名文件,放在 opencv_contrib/modules/xfeatures2d/src/ 路径下即可。

总共缺了以下几个文件,都需要拷贝:

boostdesc_bgm.i

boostdesc_bgm_bi.i

boostdesc_bgm_hd.i

boostdesc_lbgm.i

boostdesc_binboost_064.i

boostdesc_binboost_128.i

boostdesc_binboost_256.i

vgg_generated_120.i

vgg_generated_64.i

vgg_generated_80.i

vgg_generated_48.i

文件可到这里下载:点这里

下载face_landmark_model.dat超时:

手动下载地址:https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat

或者可到这里下载:这里

修改文件:

vim /root/opencv_build/opencv_contrib-4.1.0/modules/face/CMakeLists.txt

我下载好的face_landmark_model.dat是放在root下的,故上图改的为:"file:///root/"

需要注意的是,文件下载好后需要使用指令校验一下MD5的值:

如果这个值跟上面的CMakeLists.txt中的对不上的话,就需要将CMakeLists.txt中__file_hash后面的MD5的值改为上图校验出来的新的MD5的值。

下载v0.1.1d.zip超时:

手动下载地址:https://github.com/opencv/ade

或者可到这里下载:这里

为了避免后续出错,请下载master版本的,不要下载release。

修改文件:

vim ./opencv_build/opencv-4.1.0/modules/gapi/cmake/DownloadADE.cmake

同样,需要对比MD5的校验值。

还需要注意的是:github下载的zip文件里的压缩包内的文件夹的名称为:ade-master,,,需要改为:ade-0.1.1d

再重新压缩命名为:v0.1.1d.zip

否则执行上面的cmake时会出错:


4)执行上面的cmake完后会出现打印内容,着重查看:

cmake成功的话打印内容最后应该是:

5)编译并 安装opencv  

make	#计算机配置高的话可以多个核同时编译:make -j8   注:-j后面的8是处理器的内核数,可以通过键入nproc命令查看

出现编译错误1:

解决办法:

cp /root/opencv_build/opencv-4.1.0/modules/dnn/test/test_common.hpp /root/opencv_build/opencv-4.1.0/build/modules/dnn/

出现编译错误2:

编译到以下位置时机器卡死

原因:机器内存不够

查看内存:free -h

其中的 Mem:  这个是物理机的内存,可以看到我的是2G的内存; Swap  是交换分区,也就是当物理内存不够时,会使用Swap的内存空间作为虚拟内存使用。

当编译运行时会发现Mem:    的内存基本都被使用完了,而此时也发现该主机并没有分配交换分区,此处可以看到是0,这就导致在物理内存不够时机器直接卡死,因为虚拟内存没有空间给它使用。

解决办法:增加虚拟内存,也就是增加Swap的空间

可参考:CentOS增加虚拟内存_wang5701071的博客-CSDN博客_centos 虚拟内存设置

交换空间扩容后:

此时交换分区变为了4G,接着再重新编译即可顺利完成。


6)安装opencv库:sudo make install

创建一个符号链接opencv4.pc提交/usr/share/pkgconfig 目录和执行 ldconfig 重建库缓存:

sudo ln -s /usr/local/lib/pkgconfig/opencv4.pc /usr/share/pkgconfig/sudo ldconfig

当然pkgconfig也可能安装在lib64下,根据自己的改。

7)添加环境变量与加载动态库

sudo vim /etc/profile

在文件末尾另起行加入如下两行:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfigexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

同样,这里需要查看自己当前的pkgconfig是在/usr/ local  /lib还是/usr/local/lib64,根据自己的改。

令配置生效:

source /etc/profile

接下来进行pkg-config配置,默认的pkg搜索链接路径/usr/lib/pkgconfig,需要将opencv.pc拷贝到pkg的默认路径下:

cp /usr/local/lib/pkgconfig/opencv4.pc /usr/lib/pkgconfig

同样,根据自己的pkgconfig和opencv4.pc的路径改为自己的。

有些人的是:cp /usr/local/lib64/pkgconfig/opencv4.pc /usr/lib/pkgconfig

令配置生效:

ldconfig

8)查看是否安装成功(若还不成功的话试一试重启大法)

pkg-config --modversion opencv4

出现版本号时即表示安装成功。

9)验证opencv是否可以打开视频

新建一个test. cpp

#include <opencv4/opencv2/opencv.hpp>#include <iostream>using namespace cv; int main(){    VideoCapture capture;    Mat frame;    frame= capture.open("./1.mp4");    if(!capture.isOpened())    {        printf("can not open ...\n");        return -1;    }    //namedWindow("output", CV_WINDOW_AUTOSIZE);     while (capture.read(frame))    {        imshow("output", frame);        waitKey(10);    }    capture.release();    return 0;}

编译该cpp文件

g++ test.cpp -I /usr/local/include/opencv4 -L /usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_calib3d -lopencv_features2d -lopencv_videoio -std=gnu++11

编译成功后会生成a.out

执行该文件:./a.out

运行视频成功即表示安装opencv成功。


当然,也可以测试一张图片:

checkOpenCV.cpp

#include <opencv2/opencv.hpp>#include <iostream> int main() {    cv::Mat img = cv::imread("./1.png", 1);    if(!img.data){         std::cout << " fail to load ./1.png " << std::endl;         return -1;    }    //cv::imshow("img", img);    cv::imwrite("11.png", img);     return 0;}

编译指令:

g++ checkOpenCV.cpp -I /usr/local/include/opencv4 -L /usr/local/lib64 -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_calib3d -lopencv_features2d -lopencv_videoio -std=gnu++11

编译成功后会生成a.out

执行该文件:./a.out


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空