本帖最后由 阿飞 于 2018-11-22 07:51 编辑
问题导读
1.学习OpenCV是从新版本学习,还是从旧版本学习?
2.OpenCV优化了持久层,可以做哪些事情?
3.OpenCV介绍了哪些新特性?
4.OpenCV有哪些新模块?
关注最新经典文章,欢迎关注公众号
OpenCV通过GITHUB正式发布了OpenCV又一个重要里程碑版本OpenCV 4.0。
https://github.com/opencv/opencv/wiki/ChangeLog#version400
release note中介绍了OpenCV4.0 内含一些特别有用的新特性与新模块,下面就来先睹为快!
新特性
1.OpenCV1.x以来许多C风格的API又被干掉啦,这次受影响的模块包括对象检测、照片、视频、视频读写、图像读写、三维校正。貌似OpenCV3.x版本以来每个版本都会干掉一批,毫无疑问学习OpenCV从最新版本开始是个明智而且避免浪费时间的选择,其实它还没说OpenCV3.x之后,扩展模块一直在抛弃C风格的API。
2.OpenCV优化了持久层,可以结构化写XML、YAML、JOSN在核心模块中,原来的C风格API又又被抛弃了,使用FileNodeIterator可以更快访问序列存储,FileStorage也优化啦,比以前需要更少的内存。这个用过OpenCV中ML模块的都知道XML、YAML经常用来存储训练结果数据的,以后这个加载与存储会快了是福音。
3.OpenCV现在基于C++11库而且要求C++11的编译器在CMake的时候,然后说CMake OpenCV 4.0与OpenCV3.x之间的不同,需要注意一下,如果自己编译OpenCV 4.0源码应该注意到。
4.由于C++11的标准库扩展,以后没有cv::String与cv::Ptr了。在OpenCV3.x中我其实还比较喜欢用cv::String,看来这个习惯要改啦。
OpenCV深度神经网络-DNN模块
1.重磅消息终于支持Mask-RCNN模型的预测,具体可以看指南与python教程
2.集成ONNX解析器,这样就支持了大多数分类网络,YOLO对象检测网络也是部分支持(晕倒,还不是完全支持),最后是要感谢ubov Batanina这个哥们,显然这个新特性跟他有莫大的关系,身上隐藏了不少秘密。
3.对一般开发者暂时无影响,是说DNN模块的性能又有提升了,而且是基于Intel DLDT,看来这个属于Intel在发布时候夹带的私货。
4.这个改变跟开发者息息相关,就是DNN模块输入tensor数据的API改啦,不再交换RGB/BGR这样的通道交换支持啦,也不剪切传图啦,然后还是这个3.4的分支中已经改啦,这个我好像会经常用,看来以前的代码在OpenCV4.0上必须操作一波才可以继续工作。
5.如果OpenCL不支持的话,还可以通过Vulkan backend来执行一波,显然也要感谢一波对这个问题有贡献的人。
6.支持快捷方式,可以声明一个别名跳过预处理参数甚至模型路径,说实话小编有点发懵,难道这么就可以操作一波啦,仔细看了一下代码示例,发现确实如此,有一堆默认值,可以直接通过tf的组件读取模型了,而且跟tensorflow object detection API实现了无缝对接,这个是不是以后tensorflow object detection API导出模型直接可以用了,这样对端侧应用来说是很大的福音,为OpenCV这个新特性打Call。
以前需要
- 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.或现在支持OpenCL不需要配置一堆啦,直接一句话搞定,最后又说这个好像只有对Intel GPU才行,对其它还需要操作一波,显然Intel只想于自己方便。哈哈!
新模块
1.新模块G-API模块,特别重点推荐一下,这个模块可以定义一系列的图像处理过程,然后把整个过程看成一个API调用,后续小编会有文章单独演示OpenCV 4.0新特性,请继续关注本公众号即可。
2.性能全部提升,各种优化,跟开发者关系比较大的是这条,自己编译OpenCV源码时候,添加CPU_BASELINE=AVX2可以获得比原来15~30%的速度提升,请收藏此技能。
3.支持二维码检测与解析了,在对象检测模块中。同时还是感谢了神人的贡献。
4.3D对象扫描与模型创建流行算法Kinect Fusion algorithm已经被实现,被集成到了rgbd模块中,这个东西太好用啦,值得尝试一波。
5.DIS稠密光流算法已经从扩展模块中移到主仓发布,在OpenCV视频模板中,同时还把TV L1光流算法从master移到扩展模块中去啦,果然是一波神操作。
参考
作者:gloomyfish
原文链接
|