一、介绍

OpenCV(开源计算机视觉库:http://opencv.org) 是英特尔开源的一个跨平台计算机视觉的BSD许可库,包含数百种计算机视觉算法。OpenCV由Gary Bradsky于1999年在英特尔创立,第一版于2000年问世。Vadim Pisarevsky加入Gary Bradsky,一起管理英特尔的俄罗斯软件OpenCV团队。2005年,OpenCV用于Stanley,该车赢得了2005年DARPA挑战赛的冠军。后来,在Willow Garage的支持下,由Gary Bradsky和Vadim Pisarevsky领导了该项目,它得以继续积极的发展。OpenCV现在支持与计算机视觉和机器学习有关的多种算法,并且正在日益扩展。

OpenCV具备 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系统,可以说 OpenCV 是 CV 领域开发者与研究者的必备工具包。继2015 年 6 月,OpenCV 3.0 发布以来,时隔三年半,OpenCV 4.0 终于发布。至此,OpenCV 已经走过了近 18 个年头。相比于之前的版本,它进一步完善了核心接口,并添加了二维码检测器、ONNX 转换格式等新特点。

1. 重要更新

● OpenCV 4.0 现在是一个 C++11 库,要求 C++11 兼容的编译器。所需的 CMake 版本至少为 3.5.1 。

● 移除 了OpenCV 1.x 中的大量 C API。

● core 模块中的 Persistence(用于存储和加载 XML、YAML 或 JSON 格式的结构化数据)已经完全用 C++ 来重新实现,因此对应的 C API 也被移除。

● 添加了新模块 G-API,一种基于图的高效图像处理流程。

● 更新dnn模块,包含Vulkan 后端,且支持ONNX格式的网络。

● 实现了流行的 Kinect Fusion 算法,且为 CPU 和 GPU (OpenCL) 进行优化。

● objdetect 模块中添加了二维码检测器和解码器。

● 将高效、高质量的 DIS dense optical flow 算法从 opencv_contrib 移到 video 模块。

此外,OpenCV 4.0 支持 Mask-RCNN 模型,性能也有所提升,图像处理操作可实现 15%-30% 的速度提升。

2. opencv与DL

自从 OpenCV 3.1 以来,它就包含了能实现深度网络前向传播的 DNN 模块,通过该模块可以加载由 Caffe 等深度学习框架训练的模型数据,并执行前向推理运算,输出预测结果。在 OpenCV 3.3 中,DNN 模块从 opencv_contrib 移到了核心代码库,并取得了显著的加速。在 OpenCV 4.0 的更新中,它强化了 DNN 模块并添加支持 ONNX 交换格式的神经网络,这一切都表明 OpenCV 非常注重其与深度学习之间的关系。

除了libprotobuf,dnn模块不依赖任何额外的外部库,而且现在 libprotobuf 已经包含到了 OpenCV 中。

opencv支持的框架:

● Caffe

● TensorFlow

● Torch

● Darknet

● Models in ONNX format

支持的层:

● AbsVal

● AveragePooling

● BatchNormalization

● Concatenation

● Convolution (including dilated convolution)

● Crop

● Deconvolution, a.k.a. transposed convolution or full convolution

● DetectionOutput (SSD-specific layer)

● Dropout

● Eltwise (+, *, max)

● Flatten

● FullyConnected

● LRN

● LSTM

● MaxPooling

● MaxUnpooling

● MVN

● NormalizeBBox (SSD-specific layer)

● Padding

● Permute

● Power

● PReLU (including ChannelPReLU with channel-specific slopes)

● PriorBox (SSD-specific layer)

● ReLU

● RNN

● Scale

● Shift

● Sigmoid

● Slice

● Softmax

● Split

● TanH

对于对性能要求很高的神经网络层,DNN 模块还包括 SSE、AVX、AVX2 和 NEON 等底层加速库,且还有持续优化中的 Halide 后端。还有OpenCL 也已经整合到OpenCV 3.3以后发布的版本中。

各模型在dnn模块下的性能:

CPU下单张图片最佳计算时间(单位:毫秒,基于float32运算)

GPU(OpenCL 2.0)下单张图片最佳计算时间(单位:毫秒,基于float32运算)

具体参考:

https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV

二、安装

本系列教程基于windows python3环境进行实验,因此,本教程介绍如何在windows环境下安装和使用python的opencv接口。

1. 安装Annaconda

下载地址:

https://www.anaconda.com/distribution/#windows

根据电脑配置选择相应版本,在这,我选择64位版本进行安装,默认安装python3.7。

双击安装文件进行安装 ->”Next”->”I Agree”->选择”Just Me”->”Next”->选择安装路径->”Next”,

□ 勾选添加环境变量

□ 勾选设为默认python环境

点击”Install”安装

点击”Finish”完成安装

2. 安装opencv-python

采用最简单的安装方法:pip命令安装,打开命令行终端CMD,输入python,查看是否安装python环境。

exit() 退出后,输入以下命令:

pip install opencv-python

默认安装最新的发布版本,本安装版本:opencv-python 4.2.0

提示安装成功后,测试opencv版本:

# 查看opencv版本
import cv2
print(cv2.__version__)

到此,大功告成,开启opencv之旅吧!!!

附录

后续可能会用到的python包:numpy、matplotlib、pillow

pip install numpy
pip install matplotlib
pip install Pillow

【opencv系列01】OpenCV4.X介绍与安装的更多相关文章

  1. 01、Scala介绍与安装

    01.Scala介绍与安装 1.1 Scala介绍 Scala是对java语言脚本化,特点是就是使不具备脚本化的java语言能够采用脚本化方式来使用,使其具有脚本语言简单.所见即所得的特点,并且编程效 ...

  2. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

  3. Flume系列一之架构介绍和安装

    Flume架构介绍和安装 写在前面 在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中, ...

  4. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

  5. API网关系列之Kong的介绍以及安装

    一.API网关产生背景 在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器 ...

  6. Spark系列—01 Spark集群的安装

    一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的Ma ...

  7. JAVAEE——SSH项目实战01:SVN介绍、安装和使用方法

    1 学习目标 1.掌握svn服务端.svn客户端.svn eclipse插件安装方法 2.掌握svn的基本使用方法 2 svn介绍 2.1 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对 ...

  8. MySQL系列-第一章节:MySQL介绍与安装

    1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...

  9. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

随机推荐

  1. 虚拟网卡 TUN/TAP 驱动程序设计原理(经典)

    盗用-收藏 简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱 ...

  2. caffe之mac下环境搭建

    参考 http://www.linuxidc.com/Linux/2016-09/135026.html 1. 安装brew,也叫homebrew,mac下类似于ubuntu的apt-get功能 cu ...

  3. if分支判断

    # 控制语句 分支 循环语句 # 判断语句 if ..elif..else # if 条件语句(比较 逻辑 成员运算) # 空数据 == False # 非空数据 == True age = 20 i ...

  4. Drools 7.15.0 docker容器方式部署

    关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...

  5. 将js进行到底:node学习5

    HTTP开发之Connect工具集--中间件 继学习node.js的TCP API和HTTP API之后,node.js web开发进入了正轨,但这就好像Java的servlet一样,我们不可能使用最 ...

  6. 软件测试价值观-SMBT新理念

    软件测试价值观-SMBT新理念 作者:张元礼 http://blog.csdn.net/vincetest 近年来有不少软件测试同行不少有些困惑-软件测试人员的价值在哪里?我们怎么才能做好软件测试?怎 ...

  7. 收费的QQ群 改变的不只是所谓的在线教育

    改变的不只是所谓的在线教育" title="收费的QQ群 改变的不只是所谓的在线教育"> 如果说国内互联网企业中最会捞钱的,腾讯敢认第二,恐怕没有其他的企业敢认第一 ...

  8. Flask设置Access-Control_Allow_Origin实现跨域访问

    前端访问Flask的接口,浏览器报错:has been blocked by CORS policy: No 'Access-Control-Allow-Origin' heade 需要将Flask的 ...

  9. JMeter-完成批量的接口测试

    前言 当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多,而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等方式来测试接口是否能够正确返回所需的响应值. 今天,我们来一起学 ...

  10. Javascript学习笔记-基本概念-语句

    1.if语句 if (condition) statement1 else statement2 也可以像下面这样把整个if 语句写在一行代码中: if (condition1) statement1 ...