NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

开源跨平台计算机视觉库 OpenCV 4.0 正式发布

  • 2018-11-21
  • 本文字数:1667 字

    阅读完需:约 5 分钟

开源跨平台计算机视觉库OpenCV 4.0正式发布

OpenCV 是英特尔开源的跨平台计算机视觉库,它是一套包含从图像预处理到预训练模型调用等大量视觉 API 的库,并可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。OpenCV 提供了覆盖整个流程的工具,因此开发者不需要了解各个模型的原理就能基于各个 API 构建视觉任务。



OpenCV 使用 BSD 许可证,因此对研究和商业用途均免费。它具备 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系统。OpenCV 旨在提高计算效率,专注于实时应用。它使用优化的 C/C++写成,能够有效利用多核处理。此外,在 OpenCL 的加持下,OpenCV 可以利用底层异构计算平台的硬件加速。OpenCV 应用广泛,目前在全世界约有 4.7 万用户,下载量约为 1400 万。



可以说 OpenCV 是 CV 领域开发者与研究者的必备工具包,Mask-RCNN 等很多开源项目都依赖于这个工具包。现在距离 3.0 版本的发布已经过去三年多,OpenCV 4.0 final 版本终于于近日发布,这也是 4.x 版本线的第一个稳定版本,它进一步完善了核心接口,并添加了二维码检测器、ONNX 转换格式等新特点。


重要更新如下:



  • OpenCV 4.0 现在是基于 C++ 11 的库,因此编译器需要与 C++ 11 兼容。所使用的 CMake 需要是 3.5.1 以上版本。

  • OpenCV 1.x 中大量 C 的 API 已经被移除,受影响的模块包括 objdetect、photo、video、videoio、imgcodecs、calib3d。

  • core 模块中的 Persistence(用于存储和加载 XML、YAML 或 JSON 格式的结构化数据)已经完全基于 C++重新实现,因此这里的 C API 也被移除了。目前,base64 支持尚未完成(仅支持加载 base64 编码的 XML 和 YAML)。 此外,存储在 FileNode 中的序列的随机访问是慢速 O(N)操作;使用cv :: FileNodeIterator可以做更快速的顺序访问。从积极的方面来说,加载FileStorage比原来的实现方法节省了 3-6 倍的内存。




  • 针对 DNN 的改进

  • 增加对 Mask-RCNN 的支持,官方提供了操作指南Python样例

  • 集成 ONNX 解析器。当前版本的 OpenCV 支持许多流行的分类网络,部分支持 YOLO 对象检测网络(ONNX 版本的 YOLO 缺少一些提供矩形列表的最终图层)。

  • 进一步提升使用英特尔 DLDT 构建的 DNN 模块的性能。DLDT 最近已经正式开源。 请参阅指南了解如何构建和使用支持 DLDT 的 OpenCV。

  • 添加实验性的 Vulkan 后端

  • 修复了 AMD 和 NVIDIA GPU 上的 OpenCL 加速问题。 现在,用户可以直接为模型启用DNN_TARGET_OPENCL,无需额外的环境变量。不过需要注意的是,DNN_TARGET_OPENCL_FP16仅在英特尔 GPU 上做了测试,因此仍需要额外的标志。

  • 为 OpenCV 支持的最流行的深度学习网络添加了快捷方式。开发者可以指定模型的别名,从而跳过预处理参数甚至模型路径的设置!下面是一个操作示例,原来的做法是:


   python object_detection.py --model    opencv_face_detector.caffemodel --config    opencv_face_detector.prototxt --mean 104 177 123 --width 300 --height 300
复制代码


现在只需要:


   python object_detection.py opencv_fd
复制代码



  • 添加了新模块 G-API,它可作为基于图的高效图像处理流程的引擎。详细信息可以参见Graph API(G-API)页面



  • 实现了流行的 Kinect Fusion 算法并集成到 opencv_contrib/rgbd 模块,同时针对 CPU 和 GPU (OpenCL) 做了优化。为了使实时样本正常工作,我们在 opencv/videoio 模块中添加了对 Kinect 2 的支持。在 4.0 beta 版本的代码中已经对 iGPU 做了加速,从而使得高分辨率的情况下(512x512x512 集成量)性能提升了 3 倍。

  • objdetect 模块中添加了二维码检测器和解码器,可以参考这里的代码示例

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

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


以下是目前 OpenCV 支持的一些框架:


  • Caffe

  • TensorFlow

  • Torch

  • Darknet

  • ONNX 交换格式的模型


最后附上 OpenCV 4.0 发布地址:https://opencv.org/opencv-4-0-0.html




会议推荐:12 月 20-21,AICon将于北京开幕,在这里可以学习来自 Google、微软、BAT、360、京东、美团等 40+AI 落地案例,与国内外一线技术大咖面对面交流。


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2018-11-21 18:242442
用户头像
蔡芳芳 InfoQ主编

发布了 781 篇内容, 共 494.8 次阅读, 收获喜欢 2748 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

NQI国家质量基础设施“一站式”公共服务平台开发建设

源中瑞-龙先生

开发 NQI 质量基础设施“一站式”

三步教你编写一个Neumorphism风格的小时钟

空城机

JavaScript Vue 大前端 6月日更

Go http 包详解

Rayjun

Go 语言

MySQL基础之九:子查询

打工人!

myslq 6月日更

动态规划电路布线问题(Java代码实现)

若尘

数据结构 6月日更

JavaScript学习(一)——简介

空城机

JavaScript 大前端 6月日更

读深入ES6记[五]

蛋先生DX

ES6 6月日更

【Vue2.x 源码学习】第十一篇 - Vue的数据渲染流程

Brave

源码 vue2 6月日更

如何拆分大型单体系统为微服务

Zhang

微服务

沿着“云云协同”的桥梁,奔赴全面云化的产业之海

脑极体

小型电商微服务架构拆分

Simon

架构实战营

栈和队列没想象中那么难

北游学Java

Java 数据结构 队列

2021年最新阿里巴巴Java面试权威指南(泰山版)震撼来袭

Java 程序员 架构 面试 计算机

【LeetCode】完全平方数Java题解

Albert

算法 LeetCode 6月日更

MySQL 中的反斜杠 \\,真是太坑了!!

xcbeyond

MySQL 6月日更

【21-3】Zabbix 重置 Admin 密码

耳东@Erdong

zabbix 6月日更

又一个重量级的分布式链路分析的轮子

代码先生

elasticsearch ELK 分布式链路 OpenTelemetry Data Prepper

记一次差点跑路的 RabbitMQ 运维经历

看山

运维 RabbitMQ 删库 6月日更

Windows PowerShell ISE 是什么和 PowerShell 有什么区别

HoneyMoose

kubelet分析-pvc扩容源码分析

良凯尔

Kubernetes 源码分析 kubelet Ceph CSI

【译】是时候了解 CSS 逻辑属性了

KooFE

6月日更

Java 并发编程——volatile 关键字解析

Antway

6月日更

Python——列表元素的排序

在即

6月日更

深入SpringBoot的异常处理(一)

卢卡多多

异常 SpringBoot 2 全局异常 6月日更

面试系列-4 hash应用场景分析实践

李阿柯

php 面试 Redis 核心技术与实战

22 图 |M1 和 Docker 谈了个恋爱

悟空聊架构

Mac M M1 Dock 6月日更 dokcer

并发王者课-黄金1:两败俱伤-互不相让的线程如何导致了死锁僵局

MetaThoughts

Java 多线程 并发

明晚Django组队学习就要开始了

IT蜗壳-Tango

6月日更

Windows 使用 PowerShell 来管理另外一台 Windows 机器

HoneyMoose

道可道,非常道:vue生命周期的智慧之光

法医

Vue 大前端 6月日更

JAVA对象直接输出的打印结果是什么?

加百利

Java 后端 字符串 6月日更

开源跨平台计算机视觉库OpenCV 4.0正式发布_AI&大模型_蔡芳芳_InfoQ精选文章