最近opencv3.4.1发布了,想换个新的试试鲜,于是把配置的过程通过博文的方式记录下来,方便查阅。
本教程原为3.3.0,但经过博主亲测,3.4.0、3.4.1皆适用

1.去官网下载opencv,在本教程中选用的时opencv3.4.1,其他版本的配置方法异曲同工。
下载链接http://opencv.org/releases.html,选择sources版本

2.解压下载下来的zip包

unzip opencv-3.4.1.zip

3.进入到解压后的文件包中

4.安装依赖库和cmake ,如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev  

5.安装完cmake之后执行命令 ,创建编译文件夹,不创建的会提示(如下图)
In-source builds are not allowed.

mkdir my_build_dir
cd my_build_dir

6.cmake一下

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

注意:如果已经在新的文件夹中编译,但是还会出现之前的报错,把cmakecache.txt删了再编译就可

期间可能会下载一个东西,等待一会儿就OK

7.执行命令,漫长的编译过程

sudo make

8.执行命令

sudo make install

9.sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到

sudo gedit /etc/ld.so.conf.d/opencv.conf 

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加

/usr/local/lib  

10.执行如下命令使得刚才的配置路径生效

sudo ldconfig  

这个时候可能会提示错误如下图所示(上部分)

sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 不是符号连接
/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 不是符号连接
出现这个错误可能是由于系统BUG所致

只需要分别输入上面图下部分的四行命令就可解决
sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

11.配置bash

sudo gedit /etc/bash.bashrc  

在最末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存,执行如下命令使得配置生效

source /etc/bash.bashrc  

更新

sudo updatedb  

12.至此所有的配置都已经完成
下面用一个小程序测试一下

找到
cd到opencv-3.4.1/samples/cpp/example_cmake目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行

cmake .
make
./opencv_example

即可看到打开了摄像头,在左上角有一个hello opencv
即表示配置成功

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

最新文章

  1. C#Excel文件加密实现,支持xlsx、docx、pptx(C#\Net\Asp.Net)
  2. Edge Linking
  3. Azkaban 2.5.0 job type 插件安装
  4. 反射调用方法时的两种情况,走get set和不走get set
  5. liunx之:top命令解释
  6. 修改jsp文件tomcat发布失败(Could not delete May be locked by another process)
  7. Java虚拟机内存模型及垃圾回收监控调优
  8. Web前端性能优化的9大问题
  9. HDU 4658 Integer Partition(整数拆分)
  10. python开发vim插件
  11. MAYA 多线程
  12. Spring Annotation vs XML - 示例
  13. linux命令笔记之ls
  14. Linux命令_sed
  15. git/gerrit的简介
  16. creating server tcp listening socket 127.0.0.1:6379: bind No error
  17. etcd 增减节点
  18. python 07
  19. 最全的libcurl库资源整理
  20. ES--02

热门文章

  1. redis 异常 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
  2. sqlserver存储过程里传字段、传字符串,并返回DataTable、字符串,存储过程调用存储过程。
  3. systemd_journal_no_entries问题解决
  4. MySQL加锁分析 (转)
  5. mysql技术内幕--innodb存储引擎图解
  6. 手写热更新阐述tinker实现原理
  7. golang log 使用
  8. 安装 selenium 对于python而言属于一个第三方的模块
  9. call,apply,bind的用法及区别
  10. learning java AWT 布局管理器CardLayout