点击上方关注,尽在AI中国
在 OpenCV 开创性的 3.0 版本发布三年半之后游戏开发中的人工智能 拜拜,OpenCV 4.0 的第一个稳定版本终于来了!
OpenCV 通过 GITHUB 正式发布:#version400
OpenCV是一个在BSD许可下发布的跨平台计算机视觉库(开源),可以运行在Linux、Windows、Android和Mac OS操作系统上。 它是轻量级且高效的——它由一系列 C 函数和少量 C++ 类组成。 它还提供Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉领域的许多常见算法。
让我们一起来看看它的新功能吧!
1. OpenCV刚开发时使用的语言是C,很多模块无法利用C++11的良好特性,所以从OpenCV1.x开始很多C风格的API被淘汰。 历史似乎就是这样,前浪总是要……因此游戏开发中的人工智能 拜拜,学习OpenCV最好的方法就是从最新版本开始。
2. 核心模块的持久化(以 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更新的DNN(深度神经网络)模块!
1.添加对Mask-RCNN模型预测的支持。
使用指南: 示例:
2.集成ONNX解析器。 支持多种流行的分类网络。 部分支持 YOLO 对象检测网络(YOLO 的 ONNX 版本缺少一些提供矩形列表的最终层)。
3.引入Intel DLDT,提高DNN模块的速度。 不过,这对于普通开发者来说并没有太大影响。
英特尔 DLDT 最近已开源。 详细信息请参见:
4.此项与开发者更相关。 DNN 模块输入张量数据 API 发生变化。 默认情况下,blobFromImage 方法不会交换 R 和 B 通道创作人,也不会裁剪输入图像。 此外,此 API 更改也已添加到 OpenCV 3.4 分支中。
5. 如果OpenCL不支持,可以使用Vulkan后端。 (开发中···)
6. 添加了 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
7. 修复了 AMD 和 NVIDIA GPU 上的 OpenCL 加速问题。 只是提醒一下,你不需要配置太多,但不使用 Intel GPU 并不是一个好主意。
这里值得一提的是新模块G-API模块!
opencv_gapi是一个新添加的模块,它是一个非常高效的图像处理引擎。 开发人员可以在程序中定义由多个图像处理步骤组成的图形,并在执行过程中对其进行优化贴图笔刷,使其快速且可移植。
性能得到了提高,并进行了各种优化。 对于开发者来说最相关的就是这个。 自己编译OpenCV源码时,添加CPU_BASELINE=AVX2可以比原来提高15%到30%的速度。 请将此技能加入书签。
假设这里有一个二维码...
同时,objDetect模块增加了二维码检测和解码。 这个技能只能说是这个时代移动App的标配。
参考:
Kinect Fusion 算法是一种流行的 3D 对象扫描和模型创建算法,已实现并集成到 rgbd 模块中。
非常高效且高质量的 DIS 密集光流算法已从 opencv_contrib 移至 opencv/video 模块。
例子:
总结
新版本的OpenCV更加注重基础图像处理功能和深度学习模块!