Ubuntu(Debian) 下安装OpenCV最新版本 (2.47)

时间:2022-01-12 06:25:18

在GitHub上有一位大神写了Ubuntu下安装OpenCV的脚本,可以一次性在线安装好OpenCV,我觉得很具有参考意义,但是里面很多的东西不是很懂,然后就自己专研了半天,给这个脚本添加了注释,并且修改了一些地方,让大家安装的同时能够懂得到底安装了什么,路径是什么。

下面是大神的原脚本:

version="$(wget -q -O - http://sourceforge.net/projects/opencvlibrary/files/opencv-unix | egrep -m1 -o '\"[0-9](\.[0-9])+' | cut -c2-)"
echo "Installing OpenCV" $version
mkdir OpenCV
cd OpenCV
echo "Removing any pre-installed ffmpeg and x264"
sudo apt-get -qq remove ffmpeg x264 libx264-dev
echo "Installing Dependenices"
sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg
echo "Downloading OpenCV" $version
wget -O OpenCV-$version.tar.gz http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/$version/opencv-"$version".tar.gz/download
echo "Installing OpenCV" $version
tar -xvf OpenCV-$version.tar.gz
cd opencv-$version
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j 4
sudo make install
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
echo "OpenCV" $version "ready to be used"

使用的时候只要把这个这个脚本用.sh后缀的文件保存起来,例如install_opencv_online.sh,然后将其设置为可执行文件,命令是chmod u+x install_opencv_online.sh,然后通过./install_opencv_online.sh来运行就好了。 下面是我对这个脚本的理解注释,改动了一些,我自己尝试了安装没有问题,大家也可以参考,如有问题恳请联系。

#从官网获取OpenCV最新的版本
version="$(wget -q -O - http://sourceforge.net/projects/opencvlibrary/files/opencv-unix | egrep -m1 -o '\"[0-9](\.[0-9])+' | cut -c2-)"
echo "Installing OpenCV" $version
#新建并且移动到目录OpenCV
mkdir OpenCV
cd OpenCV
#删除原来的视频编码器ffmpeg和视频解码器x264,为何要删除,可能是因为要重新安装吧
echo "Removing any pre-installed ffmpeg and x264"
sudo apt-get -qq remove ffmpeg x264 libx264-dev
echo "Installing Dependenices"
#安装OpenCV依赖的组件,好多呀,其实很多组件一般的Ubuntu都安装了,只是作者要保证万无一失而已;
#所有软件包的含义都在本脚本最后,可以参考
#下面是OpenCV官网说明必须安装的 -qq的意思是不输出安装内容,除非出错了,大家也可以选择不要这个选项
sudo apt-get -qq install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
#下面是OpenCV官网说明选择安装的
sudo apt-get -qq install libtiff4-dev libjpeg-dev libpng-dev libjasper-dev libdc1394-22-dev
#下面安装刚才卸载的ffmpeg和x264
sudo apt-get -qq install ffmpeg x264
#下面都是这个脚本原作者安装的,其实我都没装,如果安装后使用有问题的同学可以尝试安装下面的组件
#sudo apt-get -qq install yasm libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg libopencv-dev checkinstall

#下载最新的OpenCV库文件;
echo "Downloading OpenCV" $version
wget -O OpenCV-$version.tar.gz http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/$version/opencv-"$version".tar.gz/download
echo "Installing OpenCV" $version

#解压缩下载到的文件;
tar -xvf OpenCV-$version.tar.gz

#进入解压后得到的目录,并且新建目录build,然后进入build目录,这个目录的名字应该是可以自己定义的;
cd opencv-$version
mkdir build
cd build
#定义安装目录,大家可以定义自己的安装目录
install_path = /home/zrinekr/ProgramFiles
#用平台无关工具cmake生成与平台相关的makefile文件;
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$install_path ..
#-D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
#使用makefile文件进行编译;
make -j 4
#编译好了自然是要安装了;
sudo make install
#安装好后进行环境变量的设置,这里大家可以找一下安装后的lib目录,我的好像直接装到了根目录下,可能有问题吧。
sudo sh -c 'echo "/lib" > /etc/ld.so.conf.d/opencv.conf'
#立即加载环境变量;
sudo ldconfig
echo "OpenCV" $version "ready to be used"

#相关软件包的含义
#所有包的含义都可以到http://packages.ubuntu.com/里查到,这里我好奇就查了一下;
#1. libopencv-dev: 看名字就知道是OpenCV的开发包,官网原文“development package necessary for development of OpenCV”;
#2. build_essential: 用于编译debian的软件包,官网原文“build debian package”;
#3. checkinstall: 关于安装的包,就是安装软件的时候可以跟踪所有新建的文件并且做好记录,方便以后卸载;
#4. cmake: 这个比较出名,一个与平台无关的预编译工具,可以将我们的软件包的源码“预编译”生成本地可以直接“编译”的makefile文件;
#5. pkg-config: 看不太懂,“pkg-config is a system for managing library compile and link flags that works with automake and autoconf.”
#6. yasm: 一个NASM的组装工具,NASM是啥?——“Yasm is a complete rewrite of the NASM assembler”
#7. libtiff4-dev,libjpeg-dev: 支持tiff,jpeg图片格式的一个库,搞CV的肯定知道tiff;
#8. libjasper-dev: 操作jpeg2000格式的图像文件的软件集合;
#9. libavcodec-dev: 来自于ffmpeg的编码器库,可以编码MPEG,DivX,MPEG4,AC3等格式的视频;
#10. libavformat-dev: 同样来自于ffmpeg的音频-视频分离器(demuxer libaray)软件库;
#11. libswcale-dev: 来自于ffmpeg的视频尺度变换库(包含头文件和静态库文件);
#12. libc1394-22-dev: IEEE 1394接口的相机的高级编程接口;
#13. libxine-dev: 音乐播放器"Xine"的编程接口以及文档;
#14. libgstreamer0.10-dev: 操作流媒体的开发框架;
#15. libgstreamer-plugins-base0.10-dev: 上面说的是框架,这个软件包就是上面那个框架的插件了,这个插件是保证基本功能(base);
#16. libv4l-dev: 视频从linux到设备的一个虚拟层, vedio for (4) linux;
#17. python-dev: python的头文件和静态库以及开发工具
#18. python-numpy: 提供一个强大的python数值计算接口,可以和C\C++, FORTRAN连接;
#19. libtbb-dev: 利用多核处理进行并行计算的接口,并不需要编程者实际操作;
#20. libqt4-dev: 这个就是Qt的库啦,Qt可以使用OpenCV但是不一定这样安装吧,反正我是不用的;
#21. libgtk2.0-dev: gtk+是多平台的图形用户接口;
#22. libfaac-dev: ACC 音频编码器,ACC是啥呀?
#23. libmp3lame-dev: 一看就知道是和mp3音频文件相关的了; LAME包含了mp3在内的很多音频编码器;
#24. libopencore-amrnb-dev,libopencore-amrwb-dev: 语音编码器,这都能用得到?"Adaptive Multi Rate (AMR) speech codec.";
#25. libtheora-dev: 视频压缩编码器 Theora;
#26. libvorbis-dev: 音频编压缩码器 Vorbis;
#27. libxvidcore-dev: Xvid,开源MPEG4 视频编码器;
#28. x264,ffmpeg: 就是刚才卸载的视频解码器和编码器了;
#29. v4l-utils: 第16个软件包的命令集合;