Linux16.04配置OpenCV3.2

来源:互联网 发布:webrtc python 编辑:程序博客网 时间:2024/06/05 01:09

OpenCV– 一个完全开源的图像处理库,通常用于图像处理,包涵了“模糊” “特征提取” “边缘检测” “目标跟踪”等多个CV领域的基础问题。它是基于C++语言来实现的,具有C++、C、Python和Java的接口,并且支持Windows, Linux, Mac, OS, iOS和Android。即具有很好的平台兼容性。OpenCV专为计算效率而设计,并强调实时应用。 以优化的C / C ++编写,该库可以利用多核处理。 通过启用OpenCL,可以对底层硬件进行加速。

使用OpenCV的用户已经超过4.7万人,下载量超过1400万。 用途从互动艺术,到矿山检查,网上缝合地图或通过先进的机器人。

配置OpenCV的目的?
1. 你的C++代码里面需要进行一定的图像或者视频操作;
2. 别人的代码里面调用到了OpenCV内部的一些函数。你需要运行别人的代码,来观察最后的结果;
3. 你的”数据挖掘” “机器学习” “深度学习”等应用中需要调用Opencv中的函数,来加速你的开发进程;
总之,如果你本人的研究领域是CV领域,那么你可能就需要使用到OpenCV。

下面开始我们的配置过程吧。
1.首先,你需要去OpenCV的官网中下载最新版本的OpenCV安装包。下载链接
2.你需要将下载到的压缩包解压到特定的文件夹下面。
tar -zxvf xxx.tar

3. 接下来,你需要安装一些依赖包,这是个漫长的过程,需要你耐心的去等待。1) sudo apt-get install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy 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 unzip2) sudo apt-get install build-essential cmake git3) 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 libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

这个过程很麻烦,可能与你的网速息息相关,因此建议你选择一个高速的网络。在这里给大家介绍一个Linux中的小技巧。即选择一个高速的安装源。具体的方法如下所示:
方案一:
1)在Linux的界面下点击左下角的“system setting”,如下图所示。

点击设置后的界面

2)选择“Software&Update”,如下图所示:
点击Software&Update结果

3)选择“DownLoad from”,如下图所示:
点击DownLoad from结果

4)点击最下方的“others”;
5)在“china”中选择“mirrors.tuna.tsinghua.edu.cn”;
6)点击右下方的“Choose Server”;
7)输入你的密钥;
8)选择“close”
9)选择“Reload”
到此就结束了,最后一步可能会花费一定的时间,希望你能耐心等待。我们选择的源是“清华的”,经过测试验证在国内这个源比较快,你可以可以尝试使用其他的下载源,方法如上所述。

方案二:你可以将所有的依赖项添加到一个.sh文件中,只需要执行一个shell文件就可以安装所有的安装包,这也是一个不错的选择。
4. cd xxx/opencv    #切换到Opencv下(路径就是你解压的路径,去官网下载最新版的opencv并进行解压)注:你可以使用 whereis opencv来查找你的opencv路径,默认路径为/usr/local中。
5. mkdir build  #新建一个build文件夹,编译的工程都在这个文件夹里6. cd build/    7. cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D INSTALL_C_EXAMPLES=ON -DINSTALL_PYTHON_EXAMPLES=ON -D WITH_OPENGL=ON ..# 利用cmake来编译整个工程,这一步在编译源码中经常会看到。注:1)CMAKE_INSTALL_PREFIX用来指定安装的位置。INSTALL_C_EXAMPLES用来安装官方的opencv(C样例)。INSTALL_PYTHON_EXAMPLES安装python样例。这些样例可以用于后面的测试。2)这个阶段需要花费一定的时间。3)如果cmake成功,会出现下面的输出结果。-- Generating done-- Build files have been written to: /home/ise/software/opencv-3.2.0/build

Cmake结果

8. sudo make -j8   # make编译注:1)其中-j表示本机的内核数,可以加快执行,如果你CPU是四核的,你需要使用 -j42)这个过程会花费相当长的一段时间,你需要耐心的等待,建议你去干别的事情,因为它需要花费半小时左右。9. sudo make install             # make安装10. sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'   # 进行一些配置11. sudo ldconfig                # 使配置生效12. sudo gedit /etc/bash.bashrc  13. 在文件的末尾添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfigexport PKG_CONFIG_PATH  14. sudo source /etc/bash.bashrc  # 使配置生效

make过程

make install过程

15. 重启系统后cd到build文件夹下16. sudo apt-get install checkinstall    # 安装checkinstall工具,用来管理安装的文件,便于卸载17. sudo checkinstall   # 执行checkinstall18. 按照提示就行操作即可。注:1)使用checkinstall的目的是为了更好的管理我安装的opencv,因为opencv的安装很麻烦,卸载更麻烦,其安装的时候修改了一大堆的文件,当我想使用别的版本的opencv时,将当前版本的opencv卸载就是一件头疼的事情,因此需要使用checkinstall来管理我的安装。执行了checkinstall后,会在build文件下生成一个以backup开头的.tgz的备份文件和一个以build开头的.deb安装文件,当你想卸载当前的opencv时,直接执行dpkg -r build即可。2)这几步可以不执行,它只是为了更好的管理opencv,方便卸载。
19. 验证opencv是否正确安装,这一步非常关键,有很多人会直接忽视掉这个过程,直接跑别人的代码,代码一直报错,却找不到问题,最后发现是自己的opencv没有配置好,这就有些尴尬啦。方案一:测试自己写的一个小案例 -- 利用opencv来读取lena图片#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){    Mat srcImage = imread("lena.jpg");    imshow("srcIMage",srcImage);    waitKey(0);    return 0;}1)执行g++ `pkg-config opencv --cflags` opencv.cpp  -o opencv `pkg-config opencv --libs`   2)./opencv  # 运行结果注:你需要保证lena.jpg位于当前目录下。输出的结果如下所示:

lena图片

方案二:测试opencv自带的样例1)cd ~/opencv/samples/c    # 切换到opencv的样例文件夹2)chmod +x build_all.sh    # 改变文件的权限3)./build_all.sh           # 编译所有的示例代码4)运行人脸检测代码./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg结果如下所示:

人脸检测结果

./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_eye.xml" --scale=1.5 lena.jpg运行结果如下所示:

人脸检测结果

~/opencv-2.4.9/build/bin/cpp-example-grabcut ~/opencv-2.4.9/samples/cpp/lena.jpg运行结果如下所示:

边框检测结果

注:
1)这里面有很多有趣的样例,你可以进行测试。它们可能需要配置一些参数,你可以查看“readme.txt”文件来了解详情。
2)lena.jpg原始图像如下所示:
lena原图

3)建议你安装最新版本的opencv库,因为新版本会改进一些Bug的同时增加一些新的函数和功能。由于opencv的版本更新速率很快,这个博客很快就是过时,但是不同版本的安装流程基本相同,你仍然可以使用这个教程进行安装。
4)在编译cmake和make的过程中,可能会出现一些错误,如果你解决了相关问题,希望你能够共享,我将加入这个博客中。
5)如果您对本博客有任何问题,可以给我留言,我会在第一时间进行恢复大家,一起学习,一起进步。
6)由于个人能力有限,难免会有一些问题,还望大家多多包涵。
7)本博客是我自己的原创,如果想要转载,需要与我取得联系,我会尽快回复大家。
邮箱:1575262785@qq.com

4 0