点击上方关注,All in AI中国

在OpenCV开创性 3.0 版本发布 3 年半之后,终于,等来了OpenCV 4.0 第一个稳定版本!

OpenCV通过GITHUB正式发布:https://github.com/opencv/opencv/wiki/ChangeLog#version400

OpenCV 是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows、Android 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

我们一块儿去看看它的新特性吧!

opencv原理详解(OpenCV4.0正式发布你关注哪些特性)(1)

1.OpenCV 最开始开发时的语言是 C,许多模块无法利用 C 11 的良好特性,所以自opencv1.x以来许多C风格的API就被干掉啦。历史好像就是这样,前浪总归是要···所以,学习OpenCV,最佳就是从最新的版本开始会比较好。

2.在 core 模块中的持久化(在 XML,YAML 或 JSON 中存储和加载结构化数据)已完全用 C 重新实现,也就是说C风格API拜拜了您那。目前,base64 支持尚未完成(仅支持加载 base64 编码的 XML 和 YAML,还未支持编码),用过OpenCV中ML模块吗?以后,加载与存储会快许多!

3.编译新版 OpenCV 现在需要支持 C 11 的编译器。

4.C 11的标准库扩展,以后没有cv::String与cv::Ptr了。现在,存储在 FileNode 中的序列的随机访问是 O(N) 操作; 使用 cv :: FileNodeIterator 能够更快地进行顺序访问。

opencv原理详解(OpenCV4.0正式发布你关注哪些特性)(2)

最为重要的就是OpenCV 更新的DNN(深度神经网络)模块啦!

1.增加支持Mask-RCNN模型的预测。

使用指南:https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-APIPython例子:https://github.com/opencv/opencv/blob/master/samples/dnn/mask_rcnn.py

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

3.通过引入 Intel DLDT 改进 DNN 模块速度。不过,这个对一般的开发者没有太大的影响。

Intel DLDT 近期已经开源,详见:

https://software.intel.com/openvino-toolkit

4.这一条就和开发者相关性比较大了,DNN模块输入tensor数据的API更改。默认情况下,blobFromImage 方法不会交换 R 和 B 通道,也不会对输入图像进行裁剪。 而且,此 API 更改也已添加到 OpenCV 3.4 分支。

5.如果OpenCL不支持,可以通过Vulkan backend。(开发中···)

6.为 OpenCV 支持的最流行的深度学习网络添加了快捷方式。 可以通过指定模型的别名,跳过预处理参数甚至模型的路径。

以前:python object_detection.py --model opencv_face_detector.caffemodel --config opencv_face_detector.prototxt --mean 104 177 123 --width 300 --height 300you can type just现在:python object_detection.py opencv_fd

7.修复了 AMD NVIDIA GPU 上的 OpenCL 加速。就是一个提醒,不需要配置太多,不过,不用Intel GPU是不是不太好。

opencv原理详解(OpenCV4.0正式发布你关注哪些特性)(3)

这儿得提一句,新模块G-API模块!

opencv_gapi 是全新添加的模块,它是非常有效的图像处理引擎。开发者可以在程序中定义多个图像处理步骤组成的图,执行的时候进行优化,使得 fast and portable。

opencv原理详解(OpenCV4.0正式发布你关注哪些特性)(4)

性能全部提升,各种优化,跟开发者关系比较大的是这条,自己编译OpenCV源码时候,添加CPU_BASELINE=AVX2可以获得比原来15~30%的速度提升,请收藏此技能。

假装此处有二维码······

同时,objdetect 模块中新增 二维码的检测和解码,这年代的移动App这个技能只能说是标配吧。

参照:https://github.com/opencv/opencv/blob/master/samples/cpp/qrcode.cpp

opencv原理详解(OpenCV4.0正式发布你关注哪些特性)(5)

3D对象扫描与模型创建流行算法Kinect Fusion algorithm已经被实现,被集成到了rgbd模块中。

opencv原理详解(OpenCV4.0正式发布你关注哪些特性)(6)

非常高效且高质量的 DIS 密集光流算法已经从 opencv_contrib 转移到 opencv/video 模块。

示例:https://github.com/opencv/opencv/blob/master/samples/cpp/dis_opticalflow.cpp

总结

新版 OpenCV 更加聚焦图像处理基础功能和深度学习模块!

opencv原理详解(OpenCV4.0正式发布你关注哪些特性)(7)

,