首先肯定是先安装依赖了,官方列出了一些:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install –assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-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 unzip
sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev
反正不管了,全部都装上去。
下载opencv和opencv_contrib(后者会在cmake配置的时候用到),这是因为opencv3以后SIFT和SURF之类的属性被移到了contrib中,。
$ wget https://github.com/opencv/opencv/archive/3.1.0.zip # 从github上直接下载或者clone也可
$ wget https://github.com/opencv/opencv_contrib/archive/3.1.0.zip
opencv最麻烦的地方就是编译是属性的配置,对于不同的需求要配置不同的属性。
cd opencv-3.2.0
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 INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=~/WYZ/download/opencv_contrib-3.1.0/modules -D BUILD_EXAMPLES=ON -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D BUILD_TIFF=ON ..
在cmake打印的信息中确认下CUDA和CUDALS的状态是否是YES:
确认无误后就可以安装了
make的时候遇到了很多问题,比如
sudo yum install libv4l-devel
sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h
sudo apt-get build-dep opencv
安装完之后还是不行,后来查了很多资料,有一个说内核版本,gcc版本不够,忽然意识到之前为了装CUDA,把gcc降级到4.9了
gcc -v
sudo apt-get autoremove gcc-4.9 //卸载cc-4.9
此时运行
gcc -v
会没有gcc版本显示,必须将gcc-5.4重新设为默认gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5.4 40
设定gcc-5.4为可选用的gcc(当前只有一个,所以就是默认的),优先级为40
上面的过程基本上完成了opencv的安装。但是并不能够马上用它,opencv还包含很多动态链接库。你可以在文件/etc/ld.so.conf中添加 /usr/local/lib(这个跟安装目录有关, {CMAKE_INSTALL_PREFIX}/lib),也可以在/etc/ld.so.conf.d 目录下增加一个conf文件(可以命名为 opencv.conf),同样添加 /usr/local/lib
使用下面的动态库管理命令ldconfig,让opencv的相关链接库被系统共享
pkg-config 维护着一个关于opencv的配置文件,这个文件(opencv.pc)在目录 /usr/local/lib/pkgconfig,这个文件记录着opencv的一些动态库信息,还有头文件信息
通过pkg-config 命令可以列出关于opencv的配置信息:
之后如果需要编译依赖opencv的代码
第一种方法:Command Line(使用命令行参数的方法)
gcc Test.c -o Test `pkg-config --cflags --libs opencv` ./Test baboon.jpg
在这里我稍微解释下这条命令的作用吧。
在上面的编译命令中我们其实用到了一个工具“pkg-config”,它主要有以下几个功能:
所有有了这个工具之后我们的编译就很方便了(不过在此之前你要确保你安装的OpenCV的安装链接库文件的目录下有一个pkgconfig文件夹,在该文件夹里面有个opencv.pc的文件,其实这就是pkg-config下OpenCV的配置文件)。
使用pkg-config时,选项--cflags 它是用来指定程序在编译时所需要头文件所在的目录,选项 --libs则是指定程序在链接时所需要的动态链接库的目录。例如我下面这张图就显示了我电脑上OpenCV的相关目录。
第二种方法:使用OpenCV推荐的CMake工具
这个方法,我郁闷了很久,试了各种办法,最终还是编译运行成功啦。一把心酸泪啊。
下面我就一步步介绍下步骤吧:
step1:新建一个目录用于存放我们的代码和程序中要处理的相关图片
step2:添加cmake工具编译时所需的文件CMakeLists.txt
CMakeLists.txt文件中的具体内容如下(注:这个文件你可以到你的OpenCV源代码解压出来的文件夹下的/samples/c/example_cmake/文件夹下拷过来,然后再做修改)。
下面我就简要的介绍下这里面内容的大概意思吧
然后我们就将终端的工作目录切换到我们建立工程文件的这个目录
(注意,千万要注意:你这时一定要查看你安装OpenCV时建立的那个编译文件,有没有带锁的标志(即你编译OpenCV是用root权限编译的),就这点就把我坑惨了,例如的我电脑上显示的就是这样的
看到上面图片中的build文件夹没,那就是我编译OpenCV源代码时建立的文件夹。)
所以,如果你是以root的权限编译的OpenCV此时你就要以切换到root用户,再切换到当前的工作目录。如果不是用root权限编译的OpenCV编译的话,你就直接切换目录就OK了。
我的电脑是要切换到root状态的
Step3:让后我们输入命令"cmake ."对当前的工程进行编译。啊哦,这时你就会发现你编译时出现了一个Bug
这个警告的大概意思就是:Cmake找不到OpenCV的链接库文件,你需要手动地设置OpenCV_DIR来指向包含库文件的路径。
好吧,这是最蛋疼的地方,就这个问题我google和上StackOverFlow都没有找到答案,只能自己尝试了,不过还是找到网友给的一些提示。
其实通过它给我们的提示我们就是要设置好这个路径。接下来我们通过camke的qt界面进行设置吧。
Step4:设置OpenCV_DIR
(1)先安装cmake的qt界面 "sudo apt-get install cmake-gui"
(2)打开cmake-gui界面
(3)我们这是就在Where is the source code 和 where to build binaries 的选项里选择我们的目录刚才建立包含我们程序的文件路径吧。
(4)我们选择cmake界面中的“Add Entry”选项,按照我下面图中的方式输入信息吧,其中alue值就是我OpenCV安装的那个目录(回想下我上面说的)。
这样我们就点击ok吧,得到下面的图了
到此OpenCV_DIR就配置完成了,单击下面的Configure和Generate,如果没报错则一切搞定啦。我们可以愉快的回到终端编译我们的程序啦。
(5)编译的方式如图所示
看到了吗,绿色OpenCV_Example就是我们刚生成的可执行文件,到此大功告成啊。
Step5:运行测试吧