根据项目需要,安装opencv并提供给开发使用,并且使用opencv提供python3的API接口。虽然不知道是个啥,还是简单了解下。

opencv是什么?

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的IPP(收费库)进行加速处理。

环境信息:

  • opencv-3.4.4 //3.x版本以上建议使用7系列来安装,省掉超多升级步骤
  • opencv_contrib-3.4.4 //opencv3以后 SIFT 和 SURF 之类的属性被移到了 contrib 中
  • centos7
  • gcc 4.8.x
  • cmake 2.8.x
  • pyenv //shell脚本编写的python版本管理工具
  • pyenv-virtualenv //虚拟环境
  • python 3.x //使用opencv提供的python3的API接口

一、下载源码包

二、安装python环境

  1. 安装pyenv

    注:pyenv和python环境安装可参考:https://www.cnblogs.com/dance-walter/p/9364652.html

  2. 安装依赖包

//安装编译包
~]# yum install -y cmake gcc gcc-c++
//安装图形特性功能
]# yum install -y gtk* libdc1394-devel libv4l-devel ffmpeg-devel gstreamer-plugins-base-devel
//安装图片功能
]# yum install -y libpng-devel libjpeg-turbo-devel jasper-devel openexr-devel libtiff-devel libwebp-devel

三、安装python依赖库

~]# pyenv virtualenv 3.4.1 opencv   //创建一个opencv别名的python3.4.1版本的环境
~]# pyenv activate opencv //切换至虚拟opencv环境中
(opencv) ~]# pip install numpy==1.13.1 //根据项目需要选择性安装
(opencv) ~]# pip install dlib==19.9.0
(opencv) ~]# pip install scipy==0.18.0

四、编译安装opencv

在linux下安装gtk-devel时会引入安装python2的安装,导致在使用cmake时会检测到两个python版本,而cmake会倾向于使用低版本的python2。

错误过程

(opencv) ~]# tar xf opencv-3.4.4.tar.gz -C /usr/local/pkg/
(opencv) ~]# tar xf opencv_contrib-3.4.4.tar.gz -C /usr/local/pkg/
(opencv) ~]# cd /usr/local/pkg/
(opencv) ~]# mkdir opencv-3.4.4/build //创建build编译目录
(opencv) ~]# cd opencv-3.4.4/build
(opencv) ~]# cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/usr/local/pkg/opencv_contrib-3.4.4/modules ..
....
-- The CXX compiler identification is GNU 4.8.5
-- The C compiler identification is GNU 4.8.5
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Performing Test HAVE_CXX11 (check file: cmake/checks/cxx11.cpp)
-- Performing Test HAVE_CXX11 - Failed
**-- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.5", minimum required is "2.7")
-- Found PythonLibs: /lib64/libpython2.7.so (found suitable exact version "2.7.5")** //这里已经查找到相应的环境信息
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named numpy.distutils
**-- Found PythonInterp: /usr/local/python/.pyenv/versions/3.4.1/bin/python (found suitable version "3.4.1", minimum required is "3.2")
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) (Required is exact version "3.4.1")**
//这里没有发现PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS环境信息。需要要在cmake时指定相应信息
....
-- OpenCL: YES (no extra features)
-- Include path: /usr/local/pkg/opencv-3.4.4/3rdparty/include/opencl/1.2
-- Link libraries: Dynamic load
--
**-- Python 2:
-- Interpreter: /usr/bin/python2.7 (ver 2.7.5)
-- Libraries: /lib64/libpython2.7.so (ver 2.7.5)
-- numpy: /usr/lib64/python2.7/site-packages/numpy/core/include (ver 1.13.1)
-- packages path: lib/python2.7/site-packages**
//这不是我想要的,需求是python3
--
-- Python (for build): /usr/bin/python2.7
--
-- Java:
-- ant: NO
-- JNI: /usr/lib/jvm/java/include /usr/lib/jvm/java/include/linux /usr/lib/jvm/java/include
-- Java wrappers: NO
-- Java tests: NO
--
-- Install to: /usr/local

#### 正确过程
```
...
(opencv) ~]# cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D INSTALL_PYTHON_EXAMPLES=ON \
**-D BUILD_opencv_python3=ON \
-D BUILD_opencv_python2=OFF \**
-D PYTHON_EXECUTABLE=$(which python) \
-D PYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-D PYTHON_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \
-D OPENCV_EXTRA_MODULES_PATH=/usr/local/pkg/opencv_contrib-3.4.4/modules ..
...
-- OpenCL: YES (no extra features)
-- Include path: /usr/local/python/opencv-3.4.4/3rdparty/include/opencl/1.2
-- Link libraries: Dynamic load
--
-- Python 3:
-- Interpreter: /usr/local/python/.pyenv/shims/python3 (ver 3.4.1)
-- Libraries: /usr/local/python/.pyenv/versions/3.4.1/lib (ver 3.4.1)
-- numpy: /usr/local/python/.pyenv/versions/3.4.1/lib/python3.4/site-packages/numpy/core/include (ver 1.13.1)
-- packages path: lib/python3.4/site-packages
--
-- Python (for build): /usr/local/python/.pyenv/shims/python3
--
-- Java:
-- ant: NO
-- JNI: /usr/lib/jvm/java/include /usr/lib/jvm/java/include/linux /usr/lib/jvm/java/include
-- Java wrappers: NO
-- Java tests: NO
--
-- Install to: /usr/local
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/python/opencv-3.4.4/build
(opencv) ~]# make -j 8 //使用几个CPU来运,越多速度越快
(opencv) ~]# make install
....
-- Set runtime path of "/usr/local/python/cv2/python-3.4/cv2.cpython-34m.so" to "/usr/local/lib64"
...
//这时已经安装好,并且生成了相应.so文件,我们只需把库文件拷贝到相应python版本的库目录下即可
(opencv) ~]# cp -a /usr/local/python/cv2/python-3.4/cv2.cpython-34m.so /usr/local/pkg/.pyenv/versions/3.4.1/lib/python3.4/cv2.so
(opencv) ~]#
```

六、测试

(opencv) ~]# python
>>> import cv2
>>> cv2.__version__
'3.4.4'

官方文档:https://docs.opencv.org/3.4.4/dd/dd5/tutorial_py_setup_in_fedora.html#gsc.tab=0

centos下安装opencv的更多相关文章

  1. Mac-OSX的Python3.5虚拟环境下安装Opencv

    Mac-OSX的Python3.5虚拟环境下安装Opencv 1   关键词 关键词:Mac,OSX,Python3.5,Virtualenv,Opencv 2   概述 本文是一篇 环境搭建 的基础 ...

  2. CentOS下安装hadoop

    CentOS下安装hadoop 用户配置 添加用户 adduser hadoop passwd hadoop 权限配置 chmod u+w /etc/sudoers vi /etc/sudoers 在 ...

  3. CentOS下安装使用start-stop-daemon

    CentOS下安装使用start-stop-daemon 在centos下下了个自启动的服务器脚本 执行的时候发现找不到start-stop-daemon命令 好吧 执行手动编译一下 加上这个命令 w ...

  4. 从零开始学 Java - CentOS 下安装 Tomcat

    生活以痛吻我,我仍报之以歌 昨天晚上看到那个冯大辉老师的微信公众号,「小道消息」上的一篇文章,<生活以痛吻我,我仍报之以歌>.知乎一篇匿名回答,主题为<冯大辉到底是不是技术大牛,一个 ...

  5. CentOS 下安装

    2016年12月5日15:25:58 ----------------------------------- 通常情况下在centos下安装软件就用yum. 关键是,使用yum你要知道安装包的名字是什 ...

  6. [Linux]CentOS下安装和使用tmux

    前天随意点开博客园,看到了一篇关于tmux的文章 Tmux - Linux从业者必备利器,特意还点进去看了.毕竟Linux对于做游戏服务端开发的我来说,太熟悉不过了.不过我就粗略地看了一眼,就关掉了. ...

  7. CentOS下安装JDK7 转载

    转载地址:http://www.cnblogs.com/rilley/archive/2012/02/02/2335395.html CentOS下安装JDK7 下载地址:http://www.ora ...

  8. Centos下安装mysql 总结

    一.MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二.MySQL的几个 ...

  9. 在centos下安装django

    这里有一个不错的Django的学习资料.先收藏一下,以备后用.谢谢 http://www.ziqiangxuetang.com/django/django-install.html 在centos下安 ...

随机推荐

  1. Ant Design Pro 子界面传值

  2. Tensorflow不能使用GPU的解决办法

    转载:https://blog.csdn.net/kudou1994/article/details/86735451 服务器在训练模型,另一边我在瞎胡乱搞不晓得咋个搞的,就不能使用GPU了.pyth ...

  3. javascript 从对象数组中 按字段/属性取最大值或最小值

    var array=[ { "index_id": 119, "area_id": "18335623", "name" ...

  4. [数据结构 - 第6章] 树之二叉平衡树(C语言实现)

    一.什么是平衡二叉树? 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两 ...

  5. HTML5自定义select标签样式的方法

    HTML5自定义select标签样式的方法 -webkit-appearance: none; 这个东西可以隐藏箭头 不过手机端就直接 设置透明度为0就行了(如果这种做法比前面个要麻烦点 毕竟还要对他 ...

  6. JVM知识点总览-高级Java工程师面试必备

    jvm 总体梳理 jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理 这里画了一个思维导图, ...

  7. 007 SpringCloud 学习笔记3-----Eureka注册中心

    1.Eureka概述 (1)引子 网约车出现以前,人们出门叫车只能叫出租车.一些私家车想做出租却没有资格,被称为黑车.而很多人想要约车,但是无奈出租车太少,不方便.私家车很多却不敢拦,而且满大街的车, ...

  8. MySQL单机优化---SQL优化

    SQL优化(变多次维护为一次维护) Sql优化分为:DDL.DML.DQL 一.DDL优化 1 .通过禁用索引来提供导入数据性能 . 这个操作主要针对有数据库的表,追加数据 //去除键 alter t ...

  9. (十一)pdf的构成之文件尾

    件尾部(trailer)如何找到交叉引用表和其他特殊对象 属性: / Size [integer]:指定交叉引用表中的条目数(也计算更新部分中的对象).使用的数字不应是间接参考. / Prev [in ...

  10. 笔记:npm常见错误

    常见错误 破坏的npm安装 随机错误 找不到兼容版本 权限错误 Error: ENOENT, stat 'C:\Users\<user>\AppData\Roaming\npm' 在Win ...