OpenCV 4.0 正式版来啦!
重回英特尔的 OpenCV 终于迎来一次大版本更新,增加了诸多新特性,快来一起看看吧~
因为 OpenCV 最开始开发时的语言是 C,导致许多模块无法利用 C++ 11 的良好特性,OpenCV 4.0 版本的一个重要使命就是去除 C 语言风格的接口,使其完全支持 C++ 11!
1.大量从 OpenCV 1.x 遗留的 C 语言风格的 API 接口被删掉,主要影响的模块是 objdetect, photo, video, videoio, imgcodecs, calib3d。
2.在 core 模块中的持久化(在 XML,YAML 或 JSON 中存储和加载结构化数据)已完全用 C ++ 重新实现,并去除了相应的 C 风格的接口。 目前,base64 支持尚未完成(仅支持加载 base64 编码的 XML 和 YAML,还未支持编码)。 现在,存储在 FileNode 中的序列的随机访问是 O(N) 操作; 使用 cv :: FileNodeIterator 能够更快地进行顺序访问。 速度上,FileStorage 的加载比以前的实现少了 3-6 倍的内存!
3.编译新版 OpenCV 现在需要支持 C++ 11 的编译器。
DNN(深度神经网络)模块是目前 OpenCV 更新最重要的模块!
1.增加 Mask-RCNN 模型支持。
使用指南:
https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API
Python例子:
https://github.com/opencv/opencv/blob/master/samples/dnn/mask_rcnn.py
作者曾经报道过的例子:
OpenCV4.0 Mask RCNN 实例分割示例 C++/Python实现
2.集成 ONNX 解析器。支持多个流行的分类网络。 部分支持 YOLO 对象检测网络(YOLO 的 ONNX 版本缺少一些提供矩形列表的最终图层)。
3.通过引入 Intel DLDT 改进 DNN 模块速度。
Intel DLDT 近期已经开源,详见:
https://software.intel.com/openvino-toolkit
4.API 更改:默认情况下,blobFromImage 方法不会交换 R 和 B 通道,也不会对输入图像进行裁剪。 而且,此 API 更改也已添加到 OpenCV 3.4 分支。
5.为不支持 OpenCL 而支持 Vulkan 的硬件平台添加了实验性质的 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 加速。现在,可以为模型启用 DNN_TARGET_OPENCL,开启 OpenCL 支持。 请注意,DNN_TARGET_OPENCL_FP16 仅在英特尔 GPU 上进行测试,因此仍需要额外的flags。(这个善意的提醒也就意味着你最好不要用那两家的显卡玩OpenCV(^ ^))
G-API 为算法的硬件优化加速提供计算图支持!
opencv_gapi 是全新添加的模块, 它是非常有效的图像处理引擎。开发者可以在程序中定义多个图像处理步骤组成的图,执行的时候进行优化,使得 fast and portable。
非常看好这一模块的应用!
“加速”是 OpenCV 开发永恒不变的主题!
每次发布这块的说明都差不多,总结起来就是一句话:
我们很努力地给你们在 CPU 的指令级上进行了加速,只要是支持该指令的 CPU 尽量让你们用上,而且我们还支持 NEON 了哦~
objdetect 模块新增 QR 码的检测和解码!
因为这个功能在移动端几乎成为 APP 的标配了。
参考例子:
https://github.com/opencv/opencv/blob/master/samples/cpp/qrcode.cpp
作者曾经对检测功能进行了测试:
OpenCV4.0 快速QR二维码检测测试示例
实现了流行的 Kinect Fusion 算法!
并针对 CPU 和 GPU(OpenCL)进行了优化,集成到 opencv_contrib / rgbd 模块中。 为了使实时采集处理更高效,在 opencv / videoio 模块中更新了 Kinect 2 支持。 在 4.0 beta 版本中,iGPU 的代码已经加速,在高分辨率的情况下(512x512x512 integration volume),性能提升了 3 倍。
非常高效且高质量的 DIS 密集光流算法已经从 opencv_contrib 转移到 opencv/video 模块。
示例:
https://github.com/opencv/opencv/blob/master/samples/cpp/dis_opticalflow.cpp
这还是比较赞的,之前 OpenCV 的光流模块相比学术界的最新成果实在是太弱了。
总结
新版 OpenCV 更加聚焦图像处理基础功能和深度学习模块!英特尔自家的加速库和 G-API 是值得表扬的亮点!
-
C语言
+关注
关注
180文章
7597浏览量
136121 -
编译器
+关注
关注
1文章
1618浏览量
49043
原文标题:千呼万唤始出来!OpenCV 4.0正式发布!
文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论