该版本发布于2018.09,是正式版本之前的一个过渡版本。我也没着急编译这个版本,等正式版出来之后再看看效果。
C++11
现在的OpenCV 4.0-pre使用了C++ 11库,所以需要编译器支持C++ 11,在之前的OpenCV 3.x版本,需要在cmake中使用-DENABLE_CXX11=ON
手动开启,现在因为OpenCV主体就需要C++11,所以这个选项不需要手动开启,它默认就是支持的。
- 也正是因为支持C++11,之前OpenCV版本中的
cv::String
和cv::Ptr
会被C++11标准中的str::string
和str::shared_ptr
代替。
DNN方面的改进
- 增加了对Mask-RCNN模型的支持,更多以及Python例程。
- 整合了ONNX 解析器,现在支持多种分类网络,而YOLO目前只能部分支持(因为YOLO所使用的ONNX版本对最后预测矩形框的层不太支持)。
- 当在编译的时候开启Intel DLDT 支持时,可以大大提升DNN模块的性能,
- 默认情况下,
blobFromImage
一族的函数不会交换red和blue通道,而且也不会对图像进行裁剪。
性能提升
- 大量的核心程序利用所谓的
wide universal intrinsics
进行重写,这些intrinsics
映射到SSE2, SSE4, AVX2, NEON,VSX
中的intrinsics函数
,当然开不开启要取决于目标平台是否支持以及编译时候的flag设置。使用这一特性可以显著提升程序的性能,就算一些函数已经优化了,依然可以再提升其性能。如果你在OpenCV编译的时候配置CPU_BASELINE=AVX2
,那么图像处理函数一般会得到15-30%的性能提升,在4.0正式版本中我们还将优化更多的函数来提升程序的性能。 - 二维码检测器已经整合进OpenCV中,我们也提供了例程,在正式版本中我们还会将二维码解码部分也整合进去,这样才是一个完整的解决方案,一家人整整齐齐。
- Kinect Fusion也被整合进
opencv_contrib/rgbd
,在CPU和GPU(OpenCL)都经过了优化。将来Kinect 2 会在opencv/videoio
中支持。
Opencv Github:更新日志