ubuntu16.04 + virtualenv + py2.7 + tf1.5.0 + keras2.2.4 + opencv2.4.9 +Numpy1.14

@https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480
@https://msd.misuland.com/pd/3070888491219946904  
Ubuntu系统默认的Python是2.7,为了使多个Python版本共存,我们使用virtualenv/virtualenvwrapper来管理不同的Python版本和相应的软件包。
virtualenvwrapper是virtualenv的扩展,使得管理虚拟环境更加方便。
sudo pip install virtualenv virtualenvwrapper

  Keras是一个基于theano和tensorflow的库框架,它的安装要不是Using Theano backend 要不就是Using tensorflow backend 。所以一般在安装keras之前一定要装好theano或者tensorflow,至于具体选那种根据自己的实际情况在keras.json文件中配置即可。

(1)基本环境安装
第一步:
mkdir Virtualenv
cd Virtualenv

sudo pip install virtualenv -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

>>>>>
Looking in indexes: http://pypi.douban.com/simple/
Collecting virtualenv
  Downloading http://pypi.doubanio.com/packages/8b/12/8d4f45b8962b03ac9efefe5ed5053f6b29334d83e438b4fe379d21c0cb8e/virtualenv-16.7.5-py2.py3-none-any.whl (3.3MB)
     |████████████████████████████████| 3.3MB 2.5MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.5

第二步:
u@u160406:~/Virtualenv$ source bin/activate

第三步:
创建python2虚拟环境(py2为虚拟环境名)
virtualenv -p /usr/bin/python py2

第四步:keras先装tf
pip install --upgrade tensorflow==1.5.0                //pip install tensorflow-gpu
    >>> import tensorflow as tf
    >>> hello = tf.constant('Hello, TensorFlow!')
    >>> session = tf.Session()
    >>> print session.run(hello)
or
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl
$ pip install TF_BINARY_URL

pip install keras==2.2.4

pip install python-opencv==2.4.9  //如果没有安装annaconda的话,貌似要把opencv-python换成python-opencv。
Collecting opencv-python==2.4.9

sudo apt-get install python-opencv
python -m pip install opencv-python==2.4.9
  ERROR: Could not find a version that satisfies the requirement opencv-python==2.4.9 (from versions: 3.1.0.0, 3.1.0.1, 3.1.0.2, 3.1.0.3, 3.1.0.4, 3.1.0.5, 3.2.0.6, 3.2.0.7, 3.2.0.8, 3.3.0.9, 3.3.0.10, 3.3.1.11, 3.4.0.12, 3.4.0.14, 3.4.1.15, 3.4.2.16, 3.4.2.17, 3.4.3.18, 3.4.4.19, 3.4.5.20, 3.4.6.27, 3.4.7.28, 4.0.0.21, 4.0.1.23, 4.0.1.24, 4.1.0.25, 4.1.1.26)
ERROR: No matching distribution found for opencv-python==2.4.9

python -m pip install opencv-python
pip install opencv-contrib-python

pip uninstall opencv-contrib-python-4.1.1.26

Installing collected packages: opencv-python
Successfully installed opencv-python-4.1.1.26
Successfully installed opencv-contrib-python-4.1.1.26

python  
    >>>import cv2
    >>>cv2.__version__   
    >>>import keras

>>>keras.__version__

python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
pip install numpy==1.14

Found existing installation: numpy 1.16.5
    Uninstalling numpy-1.16.5:
      Successfully uninstalled numpy-1.16.5
Successfully installed numpy-1.14.0

>>> from numpy import *
    >>> eye(4)

解决引入keras后出现的Using TensorFlow backend的错误,在引入头文件之后,加入
import os
os.environ['KERAS_BACKEND']='tensorflow'

(2)使用虚拟机
启动虚拟环境
cd [虚拟环境名称]/
source bin/activate
...
退出虚拟环境: deactivate

(3)卸载opencv4.1.1.26重配置opencv2.4.9
pip uninstall opencv-python
Uninstalling opencv-python-4.1.1.26:
  Would remove:
    /home/u/Virtualenv/py2/lib/python2.7/site-packages/cv2/*
    /home/u/Virtualenv/py2/lib/python2.7/site-packages/opencv_python-4.1.1.26.dist-info/*
Proceed (y/n)? y
  Successfully uninstalled opencv-python-4.1.1.26

-----------------------------------------------------------------------------------------------------------------------------------

2.1 使用python .7安装tensorflow-gpu 1.9.

安装指令如下:

# 如果本机未安装python和pip,则安装之
sudo apt-get install python-pip python-dev
# 更新pip
sudo pip install -U pip
# 安装tensorflow-gpu 1.9.
sudo pip install tensorflow-gpu==1.9. 2.2 使用python .5安装tensorflow-gpu 1.9.
如果将默认的python脚本设置成了python3.,则安装指令与2.3节相同,若未设置,则安装指令如下: # 如果本机未安装python和pip,则安装之
sudo apt-get install python3-pip python3-dev
# 更新pip
sudo pip3 install -U pip
# 安装tensorflow-gpu 1.9.
sudo pip3 install tensorflow-gpu==1.9. 2.3 验证tensorflow-gpu 1.9.0是否安装成功
执行如下命令:
python -c "import tensorflow as tf; print(tf.__version__)" 如果输出结果:
1.9. 原文链接:https://blog.csdn.net/davidhopper/article/details/81206673

------------------------------------------------------------------------------------------------------------------------------------

@https://www.cnblogs.com/shine-lee/p/9884551.html

最近因项目需要,得把OpenCV捡起来,登录OpenCV官网,竟然发现release了4.0.0-beata版本,所以借此机会,查阅资料,了解下OpenCV各版本的差异及其演化过程,形成了以下几点认识:

  1. 新版本的产生是为了顺应当下的需要,通过版本更新,接纳新技术和新方法,支持新兴编程语言接口,使用新的指令集,优化性能,解决固有问题等
  2. 新技术新方法会优先加入到新的大版本中,即使新的技术方法可以在旧版本中实现,但为了推动用户向新版本迁移,仍会优先加入到新版本中(这条看着与第1条差不多,实际意义是不同的)
  3. 新版本不可避免地会带有旧版本的痕迹,毕竟新版本是从旧版本基础上“生长”出来的,新老版本间能看到比较明显的过渡痕迹,同时出于降低迁移成本的考虑,需要(部分)向前兼容

因此,如果新版本已经稳定,且需要从头开始新项目,先考虑拥抱新版本。若碰到问题,可到旧版本的资料中找找答案。但这并不绝对,具体情况还得具体分析。

下面分析下各版本的差异以及演化路径。

OpenCV版本差异与演化,1.x To 4.0

OpenCV 1.x

OpenCV 最初基于C语言开发,API也都是基于C的,面临内存管理、指针等C语言固有的麻烦。

2006年10月1.0发布时,部分使用了C++,同时支持Python,其中已经有了random trees、boosted trees、neural nets等机器学习方法,完善对图形界面的支持。

2008年10月1.1pre1发布,使用 VS2005构建,Python bindings支持Python 2.6,Linux下支持Octave bindings,在这一版本中加入了SURF、RANSAC、Fast approximate nearest neighbor search等,Face Detection (cvHaarDetectObjects)也变得更快。

OpenCV 2.x

当C++流行起来,OpenCV 2.x发布,其尽量使用C++而不是C,但是为了向前兼容,仍保留了对C API的支持。从2010年开始,2.x决定不再频繁支持和更新C API,而是focus在C++ API,C API仅作备份。

2009年9月2.0 beta发布,主要使用CMake构建,加入了很多新特征、描述子等,如FAST、LBP等。

2010年4月2.1版本,加入了Grabcut等,可以使用SSE/SSE2…指令集。

2010年10月2.2版本发布,OpenCV的模块变成了大家熟悉的模样,像opencv_imgprocopencv_features2d等,同时有了opencv_contrib用于放置尚未成熟的代码,opencv_gpu放置使用CUDA加速的OpenCV函数。

2011年6月起的2.3.x版本、2012年4月起的2.4.x版本,一面增加新方法,一面修复bug,同时加强对GPU、Java for Android、 OpenCL、并行化的支持等等,OpenCV愈加稳定完善,值得注意的是 SIFT和SURF从2.4开始被放到了nonfree 模块(因为专利)。

考虑到过渡,OpenCV 2.4.x仍在维护,不过以后可能仅做bug修复和效率提升,不再增加新功能——鼓励向3.x迁移。

OpenCV 3.x

随着3.x的发布,1.x的C API将被淘汰不再被支持,以后C API可能通过C++源代码自动生成。3.x与2.x不完全兼容,与2.x相比,主要的不同之处在于OpenCV 3.x 的大部分方法都使用了OpenCL加速

2014年8月3.0 alpha发布,除大部分方法都使用OpenCL加速外,3.x默认包含以及使用IPP,同时,matlab bindings、Face Recognition、SIFT、SURF、 text detector、motion templates & simple flow 等都移到了opencv_contrib下(opencv_contrib不仅存放了尚未稳定的代码,同时也存放了涉及专利保护的技术实现),大量涌现的新方法也包含在其中。

2017年8月3.3版本,2017年12月开始的3.4.x版本,opencv_dnn从opencv_contrib移至opencv,同时OpenCV开始支持C++ 11构建,之后明显感到对神经网络的支持在加强,opencv_dnn被持续改进和扩充。

OpenCV 4.0

2018年10月4.0.0发布,OpenCV开始需要支持C++11的编译器才能编译,同时对几百个基础函数使用 "wide universal intrinsics"重写,这些内联函数可以根据目标平台和编译选项映射为SSE2、 SSE4、 AVX2、NEON 或者 VSX 内联函数,获得性能提升。此外,还加入了QR code的检测和识别,以及Kinect Fusion algorithm,DNN也在持续改善和扩充。

总结

这些年来,计算机视觉领域的新技术新方法不断涌现,指令集、编程语言和并行化技术越发先进,OpenCV也在紧跟时代的脚步,不断吸收完善自身。本文仅对OpenCV的演化过程仅总结了部分要点,详细可参见 OpenCV 在 github上的ChangeLog。

参考

ubuntu系统---ubuntu16.04 + virtualenv + py2.7 + tf1.5.0 + keras2.2.4 + opencv2.4.9 +Numpy1.14的更多相关文章

  1. Ubuntu系统---Ubuntu16.04进不了界面(登录界面循环,密码正确)(一体化安装(CUDA +NVIDIA驱动)+ cuDNN)

                                                 Ubuntu16.04进不了界面(登录界面循环,密码正确)(一体化安装(CUDA +NVIDIA驱动)+ cu ...

  2. Ubuntu16.04 64位编译安装Hi3520D_SDK_V1.0.4.0

    1.复制uboot/tools/mkimage到环境变量路径 2.修改kernel/timeconst.pl,删除define 3.busybox makefile修改: /itc_work/hi35 ...

  3. ubuntu16.04 安装配置matlab+python +cuda8.0+cudnn+opencv3.1的caffe环境

    网络上有很多ubuntu上caffe配置环境的帖子,本人照着其中的许多进行了参考,都出现了或多或少的错误,很多地方也有差异. 于是自己整理了下自己的安装过程,成功进行了测试,跑通了faster-rcn ...

  4. Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python)

    Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...

  5. 在win10下安装双系统ubuntu16.04.3教程

    闲暇了两天,终于想起来要装一个Liunx系统了.于是捣鼓了一番,实现了在Win10下安装Ubuntu16.04.3版本. 一.准备工作 下载Ubuntu 16.04.3镜像 准备一个2G以上的U盘 下 ...

  6. [Ubuntu] 移植Ubuntu16.04根文件系统到嵌入式平台

    CPU:RK3288 1.通过 ubuntu cdimage 下载 ubuntu16.04 内核,以下两种方式都可以 在 windows 系统网页中下载 http://cdimage.ubuntu.c ...

  7. 解决联想R720双系统Ubuntu16.04的无线网卡开启问题及信号不稳定

    问题一:1.问题描述笔记本型号:Lenovo r720笔记本(i5-7300hq,gtx1060 maxq 6g),默认装入Win10系统,然而当装入Ubuntu16.04双系统时,会出现无线网卡(型 ...

  8. 针对双系统ubuntu16.04卡死及系统没有声音解决方法

    楼主电脑系统状况:win10主系统,128固态为ubuntu系统       安装一共为两次. 第一次出现ubuntu安装成功后没有声音,主系统win10有声音,Ubuntu上检测不到声卡,说明ubu ...

  9. Ubuntu16.04下iTop4412环境搭建+Android4.0.3编译

    系统:Ubuntu16.04.02(优麒麟) 安装库文件和JDK 使用cd 命令,进入解压出来的“Android_JDK” -->“jdk6”文件夹,运行脚本文件 “install-sun-ja ...

随机推荐

  1. Docker 容器的通信(十二)

    目录 一.容器间通信 1.IP 通信 2.Docker DNS Server 3.joined 容器 二.容器访问外部网络 三.外部网络访问容器 1.随机端口 2.指定端口 3.不指定任何端口. 4. ...

  2. 这一次,真正掌握composer

      思维导图 composer是现代PHP的基石 现代高级编程语言,依赖管理工具是必不可少的.Java有Maven,Python有pip,Nodejs有npm, 而在composer出现之前,PHP只 ...

  3. C#使用Castle实现AOP面向切面编程

    Castle.Core 本质是创建继承原来类的代理类,重写虚方法实现AOP功能.个人觉得比Autofac用着爽 使用方式比较简单,先新建一个控制台项目,然后在Nuget上搜索Castle.Core并安 ...

  4. juc多线程编程学习

    JUC是java.util.concurrent的缩写,java.util.concurrent是在并发编程中使用的工具类. 在以前的解决并发问题,一般是通过Synchronize关键字,现在可以通过 ...

  5. uwp,右键浮出获取DataContext(数据上下文)

    列表视图类控件,如ListView/GridView,有时项目需要按下右键浮出选项,来获取Item的DataContext. 下面的示例代码,事先我已经有了一个自定义类Video,并且已经绑定了数据源 ...

  6. 处理人际关系的5大原则zz

    人际关系题是结构化面试当中重要的题型之一,人们常用两个“70%”来形容人际关系的重要性: 人际关系题主要考察考生不同人际关系间的适应性.人际合作的主动性.处理人际关系的原则性和灵活性以及对组织中权属关 ...

  7. 【转帖】一文看懂docker容器技术架构及其中的各个模块

    一文看懂docker容器技术架构及其中的各个模块 原创 波波说运维 2019-09-29 00:01:00 https://www.toutiao.com/a6740234030798602763/ ...

  8. SQLServer 查询view中是否包含某个关键字

    在数据库view的创建中,会遇到一些跨数据库的view脚本,但是在将view更新到production的时候可能忘记更改database name,导致出现一些问题. 以下脚本可以检查出包含某个关键字 ...

  9. 多个结果集union后保持各自原有排序

    SELECT *FROM ( SELECT TOP (@count1) a.* FROM Article AS a WITH (NOLOCK)LEFT JOIN Article_Type AS at ...

  10. java 中的容器(札记)

    创建容器向上转型为接口的时候,有时候,并不是一定可行的,因为有的实现类,在接口的基础添加了自己的方法:比如:List 接口下面的 LinkedList 自己定义了一些方法 : Arrays.asLis ...