根据项目需要,安装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. mac node配置path

    一.查看node安装路径 whitch node 二.打开配置文件 vi ./.bash_profile 三.添加一行PATH(按i进入insert才能编辑) export NODE_HOME=&qu ...

  2. maven安装和应用

    maven安装和应用 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://www.cnblogs.com/xihehua/p/9639045.html https://w ...

  3. Java 8并行流的性能陷阱

    并行化流被分成多个块,每个块独立处理,结果在最后汇总. CPU密集型代码如下: private long countPrimes(int max) {     return range(1, max) ...

  4. php7.4 更新特性

    PHP 7.4.0 Released! The PHP development team announces the immediate availability of PHP 7.4.0. This ...

  5. spring boot 指定启动端口

    spring boot 默认端口为8080 1.修改为指定端口 (1)修改配置文件 src/main/resources/application.properties server.port= (2) ...

  6. PHP设计模式 - 解释器模式

    给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. 角色: 环境角色(PlayContent):定义解释规则的全局信息. 抽象解释器(Empress):定 ...

  7. 将python工程部署到新服务器(对virtualenv工具进行环境迁移)

    将python工程部署到新服务器(对virtualenv工具进行环境迁移) # 从开发的电脑上导出 pip list 到 requirements.txt 文件pip freeze > requ ...

  8. C++中STL中简单的Vector的实现

    该vector只能容纳标准库中string类, 直接上代码了,StrVec.h文件内容为: #ifndef STRVEC_H #define STRVEC_H #include<iostream ...

  9. composer安装FOSUserBundle内存溢出

    内存溢出异常: Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes ...

  10. todolist 包含本地存储知识

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...