OpenCV Changelog

What's new in OpenCV 4.8.0

Jun 29, 2023
  • DNN module patches:
  • #23161, #23409 TFLite models support, including int8 quantized models.
  • #23604 Enabled DNN module build without Protobuf dependency.
  • Improved layers => supported more models:
  • ONNX: #23047 Layer normalization, #23219 GELU and #23655 QLinearSoftmax.
  • Fixes in CANN backend:
  • #23319 support ONNX Split, Slice, Clip (Relu6) and Conv with auto_pad.
  • #23401 support ONNX Sub, PRelu, ConvTranspose.
  • #23613 Reduce Refactor for robustness and potential follow-up improvements.
  • #23491 Fixes for Segment Anything Model by Meta.
  • Fixes in nary element wise layer about broadcast:
  • #23557 Fixes in CPU.
  • #23528 and #23560 Fixes in CUDA backend.
  • Further increased DNN speed on ARM and X86 by improving convolution, covering 1D and 3D cases, supporting convolution+element-wise op fusion.
  • Added full FP16 computation branch on ARMv8 platform, 1.5x faster than FP32 #22275(FP16 Winograd is still pending).
  • #23349 Vulkan backend refactor for better performance and robustness. It runs 4X faster than before.
  • #22750 Added API blobFromImageParam to build network inputs with pre-processings.
  • #22957 Modern OpenVINO support.
  • Objdetect module:
  • #23020 FaceDetectorYN upgrade for better performance, accuracy and facial landmarks support.
  • #23264 New QR code detection algorithm based on ArUco code.
  • #23666 Bar code detector and decoder moved from Contrib to main repository.
  • #23758 Introduced common API for all graphical codes like bar codes and QR codes.
  • #23153 Added flag for legacy pre-4.6.0 ChAruco boards support.
  • Multiple bug fixes and improvements in QR code detection and decoding pipelines.
  • Multiple bug fixes and improvements in ArUco based pipelines.
  • Calibration module:
  • #23078 USAC framework improvements.
  • #23025 Fixed stddev estimation in camera calibration pipelines.
  • #23305 Fixed incorrect pixel grid generation in icvGetRectangles that improves accuracy of getOptimalNewCameraMatrix, stereoRectify and some other calibration functions.
  • Charuco board support in patterns generator, interactive calibration tool and calibration samples.
  • Image processing module:
  • #23210, #23388 Various fixes in line segments detector.
  • #23634 Fixed even input dimensions for INTER_NEAREST_EXACT in resize.
  • #21959 Optimise local cost computation in IntelligentScissorsMB::buildMap.
  • Keep inliers for linear remap with BORDER_TRANSPARENT #23754
  • #22798 Fix distransform to work with large images.
  • Features2d module:
  • #23124 SIFT accuracy improvements.
  • Core module:
  • #13879 Added REDUCE_SUM2 option to cv::reduce.
  • #22947 Introduced cv::hasNonZero function.
  • #23443 Update IPP binaries update to version 20230330.
  • Improved RISC-V RVV vector extensions support.
  • #23383 Support RVV v0.11 intrinsics available in LLVM 16 and GCC 13
  • #23246 Support build with T-Head RISC-V toolchain (RVV 0.7.1 and 1.0)
  • Several OpenCL vendor and version handling improvements.
  • Multimedia:
  • #23596 Added AVIF support through libavif.
  • #23237 Orbbec Femto Mega cameras support.
  • #23172 HEVC/H265 support in VideoWriter with MS Media Foundation backend.
  • #23692 Fixed FPS computation on some videos for FFmpeg backend.
  • #23300 Added support for VideoCapture CAP_PROP_AUTO_WB and CV_CAP_PROP_WHITE_BALANCE_BLUE_U for DShow backend.
  • #23460, #23469 Fixes OBS Virtual Camera capture.
  • #23433 CV_32S encoding support with tiff.
  • #3486, #3453 More strict decoder checks and dynamic resolution support in cudacodec module (opencv_contrib).
  • #3485 Added basic VideoCapture properties support to cudacodec module (opencv_conrib).
  • Python Bindings:
  • #20370 Python typing stubs.
  • #23350 Fix reference counting errors in registerNewType.
  • #23399, #23436, #23138 Fixed ChAruco and diamond boards detector bindings.
  • #23371 Added bindings to allow GpuMat and Stream objects to be initialized from memory initialized in other libraries
  • #23691 np.float16 support.
  • Python bindings for RotatedRect, CV_MAKETYPE, CV_8UC(n).
  • JavaScript bindings:
  • #23344 Added possibility for disabling inlining wasm in opencv.js
  • Extended JS bindings for Aruco, Charuco, QR codes and bar codes.
  • Platforms:
  • #21736 Android: don't require deprecated tools.
  • #23768 iOS: Fixed framework build issues with CMake 3.25.1+.
  • Other:
  • Several critical issue fixes in wechat_qrcode module (opencv_contrib)

New in OpenCV 4.7.0 (Dec 29, 2022)

  • DNN:
  • New ONNX layers: Scatter and ScatterND, Tile, ReduceL1, ReduceMin and more.
  • Signinficant performance optimization for convolutions. Winograd algoritm implementation.
  • Element-wise operation (add, sub, mul, div, ...): Broadcasting.
  • OpenVino 2022.1 support.
  • CANN backend support.
  • Algorithms:
  • ArUco markers and April tags support including ChAruco and diamond boards detection and calibration.
  • QR code detection and decoding quality imrovement. Alignment markers support. Benchmark for QR codes: link
  • Nanotrack v2 tracker based on neural networks.
  • Stackblur algoruthm implementation.
  • Multimedia:
  • FFmpeg 5.x support.
  • CUDA 12.0 support. Hardware accelerated video codecs support on NVIDIA platforms with modern Video Codec SDK (NVCUVID and NVENCODEAPI).
  • CV_16UC1 read/write video support with FFmpeg.
  • Orientation meta support on Mac with native media API.
  • New iterator-based API for multi-page image formats.
  • libSPNG support for PNG format.
  • SIMD acceleration for self-built libJPEG-Turbo
  • H264/H265 support on Android. Multiple fixes for video decoder, endcoder and camera memory layout.
  • G-API:
  • Exposed all core APIs to Python, including stateful kernels.
  • Optimization:
  • New universal intrinsics backend for scalable vector instructions. The first scalable implementation for RISC-V RVV 1.0.
  • DNN module patches:
  • Added CANN backend support #22634. Link to the manual: https://github.com/opencv/opencv/wiki/Huawei-CANN-Backend.
  • Added bacthed NMS for multi-class object detection #22857
  • Accelerating convolution, especially for ARM CPU. #21910 and #22905
  • Winograd's convolution optimization
  • Improved layers / supported more models:
  • Scatter and ScatterND #22529, Tile #22809
  • Fixes in Slice (support negative step #22898)
  • Support some reduce layers of ONNX #21601

New in OpenCV 4.6.0 (Dec 28, 2022)

  • Highlights of this release:
  • OpenCV project infrastructure migrating on GitHub Actions workflows for CI and release purposes
  • Added support for GCC 12, Clang 15
  • Added support for FFmpeg 5.0
  • DNN module patches:
  • Improved layers / activations / supported more models:
  • LSTM (+CUDA), resize (+ONNX13), Sign, Shrink, Reciprocal, depth2space, space2depth
  • fixes in Reduce, Slice, Expand
  • Disabled floating-point denormals processing #21521
  • Changed layer names in ONNX importer to support "output" entities properly
  • Added TIM-VX NPU backend support: https://github.com/opencv/opencv/wiki/TIM-VX-Backend-For-Running-OpenCV-On-NPU
  • Added Softmax parameter to ClassificationModel
  • Added audio speech recognition sample (C++) #21458
  • Intel® Inference Engine backend ( OpenVINO™ ):
  • added initial support for OpenVINO 2022.1 release
  • removed support of legacy API (dropped since 2020.3)
  • G-API module:
  • G-API framework:
  • Introduced a Grayscale image format support for cv::MediaFrame: #21511;
  • Enabeled .reshape() support in the CPU backend: #21669;
  • Fixed possible hang in streaming execution mode with constant inputs: #21567;
  • Introduced proper error/exception propagation in the asynchronous streaming execution mode: #21660;
  • Fixed new stream event handling: #21731.
  • Fluid backend:
  • Fixed horizontal pass in the Resize kernel, fixed Valgrind issues: #21144;
  • Extended Resize kernel with F32 version: #21678, added AVX: #21728.
  • Enabled dynamic dispatch for Split4 kernel: #21520;
  • Enabled dynamic dispatch for Merge3 kernel: #21529;
  • Added a SIMD version for DivC kernel: #21474;
  • Added a SIMD version for DivRC kernel: #21530;
  • Enabled dynamic dispatch for Add kernel: #21686;
  • Enabled dynamic dispatch for Sub kernel: #21746;
  • Added a SIMD version for ConvertTo kernel: #21777;
  • Fixed kernel matrix size for Sobel kernel: #21613.
  • OpenCL backend:
  • Intel® OpenVINO™ inference backend:
  • Fixed NV12 format support for remote memory when OpenVINO™ remote context is used: #21424.
  • Implemented correct error handling in the backend: #21579.
  • Fixed ngraph warnings #21362.
  • OpenCV AI Kit backend:
  • Introduced a new backend to program OpenCV AI Kit boards via G-API. Currently the backend is in experimental state, but allows to build Camera+NN pipeline and supports heterogeneity (mixing with host-side code): #20785, #21504.
  • Media integration:
  • Enabled GPU inference with oneVPL and DirectX11 on Windows in Intel® OpenVINO™ inference backend: #21232, #21618, #21658, #21687, #21688. Now GPU textures decoded by oneVPL decoder can be preprocessed and inferred on GPU with no extra host processing.
  • Enabled oneVPL support on Linux: #21883.
  • Extended GStreamer pipeline source with Grayscale image format support: #21560.
  • Python bindings:
  • Exposed GStreamer pipeline source in Python bindings: #20832.
  • Fixed Python bindings for CudaBufferPool, cudacodec and cudastereo modules in OpenCV Contrib.
  • Samples:
  • Introduced a pipeline modelling tool for cascaded model benchmarking: #21477, #21636, #21719. The tool supports a declarative YAML-based config to describe pipelines with simulated pre-/post-processing. The tool collects and reports latency and throughput information for the modelled pipeline.
  • Other changes and fixes:
  • Moved GKernelPackage into cv:: namespace by default, its cv::gapi:: alias remain for compatibility: #21318;
  • Moved Resize kernel from core to imgproc kernel packages for CPU, OpenCL, and Fluid backends: #21157. Also moved tests appropriately: #21475;
  • Avoided sporadic test failures in DivC: #21626;
  • Fixed 1D Mat handling in the framework: #21782;
  • Reduced the number of G-API generated accuracy tests: #21909.
  • And many other contributions, including:
  • Support downloading 3rdparty resources from Gitcode & Gitlab-style mirrors #21531
  • Added NEON support in builds for Windows on ARM #21630
  • Add n-dimensional transpose to core #21703
  • (opencv_contrib) Add Connected Components Labeling in CUDA #3153

New in OpenCV 4.5.5 (Dec 27, 2021)

  • Audio support as part of VideoCapture API: MSMF #19721 + GStreamer #21264
  • Updated SOVERSION handling rules: #21178
  • DNN module patches:
  • Added tests to cover ONNX conformance test suite: #21088
  • Improved layers / activations / supported more models
  • Upgraded builtin protobuf from 3.5.2 to 3.19.1
  • More optimizations for RISC-V platform
  • Intel® Inference Engine backend ( OpenVINO™ ):
  • added support for OpenVINO 2021.4.2 LTS release
  • G-API module:
  • G-API framework:
  • Fixed issue with accessing 1D data from cv::RMat: #21103;
  • Restricted passing the G-API types to graph inputs/outputs for execution: #21041;
  • Various fixes in G-API Doxygen reference: #20924;
  • Renamed various internal structures for consistency #20836 #21040;
  • Fluid backend:
  • Introduced a better vectorized version of Resize: #20664.
  • Added vectorized version of Multiply kernel: #21024;
  • Added vectorized version of Divide kernel: #20914;
  • Added vectorized version of AddC kernel: #21119;
  • Added vectorized version of SubC kernel: #21158;
  • Added vectorized version of MulC kernel: #21177;
  • Added vectorized version of SubRC kernel: #21231;
  • Enabled SIMD dispatching for AbsDiffC: #21204;
  • OpenCL backend:
  • Fixed sporadic test failures in Multiply kernel running on GPU: #21205;
  • Intel® OpenVINO™ inference backend:
  • Extended ie::Params to support static batch size as input to inference: #20856;
  • Enabled 2D input tensor support in IE backend: #20925;
  • Fixed various issues with imported (pre-compiled) networks: #20918;
  • Media integration:
  • Introduced a GStreamer-based pipeline source for G-API: #20709;
  • Completed the integration of Intel® oneVPL as a pipeline source for G-API #20773 with device selection #20738, asynchronous execution #20901, intial demux support #21022, and GPU-side memory allocation via DirectX 11 #21049.
  • Samples:
  • Replaced custom kernels with now-standard G-API operations in several samples #21106;
  • Moved API snippets from G-API samples to a dedicated place #20857;
  • Other changes and fixes:
  • Fixed various static analysis issues for OpenVINO 2021.4 release: #21083 and #21212;
  • Fixed various build warnings introduced after OpenVINO update: #20937;
  • Continued clean-up in the G-API test suite on GTest macros #20922 and test data #20995;
  • Added custom accuracy comparison functions to Fluid performance tests: #21150.

New in OpenCV 4.5.4 (Oct 11, 2021)

  • Highlights of this release:
  • GSoC 2021 is over. 11 projects are successful, and most of the results are already merged into OpenCV tree and available in 4.5.4 (in the main repository or in opencv_contrib). Here is the list of merged functionality:
  • 8-bit quantization in DNN Module: #20228 + onnx importer #20535
  • Improved OpenCV bindings for Julia: opencv_contib#3009
  • Speech recognition sample: #20291
  • Optimizing OpenCV DNN for RISC-V: #20287 + #20521
  • Tutorial for Universal Intrinsics and parallel_for_ for efficient cross-platform algorithm implementation: #20361
  • DNN module patches:
  • Improved layers / activations / supported more models:
  • GRU, CumSum, Max, Min, ExpandDims
  • Fixed convolution with asymmetric padding
  • Fixed Unsqueeze (ONNX opset 13)
  • Fixed several memory access issues in OpenCL kernels
  • Implement CTC prefix beam search decode for TextRecognitionModel: #20524
  • Added SoftNMS implementation: #20813
  • Intel® Inference Engine backend ( OpenVINO™ ):
  • added support for OpenVINO 2021.4.1 LTS release
  • added support for models with non-FP32 outputs or for outputs with 1D layout
  • And many other contributions:
  • Add DNN-based face detection and face recognition into modules/objdetect: #20422
  • Restore LineSegmentDetector (LSD) implementation
  • Python: cv.Mat wrapper over numpy.ndarray is introduced to handle issues with passing of 3D arrays into C++ algorithms: #19091
  • Python: support OpenCV extension with pure Python modules: #20611
  • Debugging: Add gdb pretty printer for cv::Mat: #20547
  • Add Quicklook for Mat on iOS and macOS: #20457
  • Add generation of new type of radon checkerboard: #20735

New in OpenCV 4.5.3 (Oct 11, 2021)

  • Highlights of this release:
  • highgui: added support for UI backends. Special OpenCV builds allow to select UI backend and/or load it dynamically through plugins.
  • videoio: supported UMat/OpenCL hardware-accelerated video decoding/encoding through FFmpeg backend.
  • video: DaSiamRPN tracker is implemented as OpenCV algorithm.
  • DNN module:
  • Improved layers / activations / supported more models:
  • optimized: MatMul support in CUDA backend (#20138)
  • fixed: BatchNorm reinitialization (#20283)
  • Intel® Inference Engine backend ( OpenVINO™ ):
  • added support for OpenVINO 2021.4 LTS release
  • enabled OpenCL kernels cache in IE clDNN plugin (#20006)
  • G-API module:
  • Python support:
  • Introduced a new Python Operation API: now G-API can be extended with new graph operations in Python directly: #19982;
  • Extended Python bindings with more G-API confuration options: specifying arbitrary number of NN models for the pipeline (#20157), graph compile arguments (#20196).
  • Exposed more G-API operations in Python bindings: parseSSD, parseYolo, copy, timestamp, seq_id (#20271).
  • Inference support:
  • Added FP16 data type handling in the OpenVINO™ inference backend;
  • Introduced inference with remote context in the OpenVINO™ inference backend (#20156), also extended cv::MediaFrame data structure to carry extra information about remote memory when possible (20151);
  • Operations:
  • Added Transpose operation (#20107);
  • Fixed a possible ambiguous overload problem in parseSSD operation.
  • Demos:
  • Introduced a MTCNN object detection demo. This demo highlights how to combine Deep Learning with a non-trivial user-defined pre- and post-processing in G-API: #19923;
  • Other changes:
  • Added a new graph compile option to specify the internal queue capacity in the Streaming mode -- this option may be used to fine-tune the execution behavior from a throughput-oriented (default) to a latency oriented mode: #20119;
  • Added ITT instrumentation in the Streaming executor -- now different parts of the pipeline execution can be highlited in the Intel® VTune™ Profiler.
  • Fixed issue with passing empty data inputs to the graph: #20184.
  • Documentation:
  • Extended the Doxygen reference with new structures/method description for Generic inference (#20169), OpenVINO™ inference parameters (#20112), Stereo, cv::MediaFrame (#20238), and other API parts.
  • Documentation:
  • Updated documentation to address plugin support modes / build options: #20194
  • And many other great contributions from OpenCV community:
  • samples: added PaddlePaddle classification model conversion case: #19976
  • core: fix dynamic loading of clBLAS and clFFT: #20203
  • imgproc: improved implementation of rotatedRectangleIntersection: #19842
  • (opencv_contrib) 1D Barcode support: #2757

New in OpenCV 4.5.2 (Jun 30, 2021)

  • Highlights of this release:
  • core: added support for parallel backends. Special OpenCV builds allow to select parallel backend and/or load it dynamically through plugins
  • imgproc: added IntelligentScissors implementation (JS demo). The feature is integrated into CVAT annotation tool and you can try it online on https://cvat.org
  • videoio: improved hardware-accelerated video decoding/encoding tasks.
  • DNN module:
  • Improved debugging of TensorFlow parsing errors: #19220
  • Improved layers / activations / supported more models:
  • optimized: NMS processing, DetectionOutput
  • fixed: Div with constant, MatMul, Reshape (TensorFlow behaviour)
  • added support: Mish ONNX subgraph, NormalizeL2 (ONNX), LeakyReLU (TensorFlow), TanH (Darknet), SAM (Darknet), Exp
  • Intel® Inference Engine backend ( OpenVINO™ ):
  • added support for OpenVINO 2021.3 release
  • G-API module:
  • Python support:
  • Introduced a new Python backend - now G-API can run custom kernels written in Python as part of the pipeline: #19351;
  • Extended Inference support in the G-API Python bindings: #19318;
  • Added more graph data types support in the G-API Python bindings: #19319;
  • Inference support:
  • Introduced dynamic input / CNN reshape functionality in the OpenVINO inference backend #18240;
  • Introduced asynchronous execution support in the OpenVINO inference backend, now inference can run in multiple requests in parallel to increase stream density/throughput: #19487, #19425;
  • Extended supported data types with INT64/INT32 in ONNX inference backend and with INT32 in the OpenVINO inference backend #19792;
  • Introduced cv::GFrame / cv::MediaFrame and constant support in the ONNX backend: #19070;
  • Media support:
  • Introduced cv::GFrame / cv::MediaFrame support in the drawing/rendering interface: #19516;
  • Introduced multi-stream input support in Streaming mode and frame synchronization policies to support cases like Stereo: #19731;
  • Added Y and UV operations to access NV12 data of cv::GFrame at the graph level; conversions are done on-the-fly if the media format is different: #19325;
  • Operations and kernels:
  • Added performance tests for new operations (MorphologyEx, BoundingRect, FitLine, FindContours, KMeans, Kalman, BackgroundSubtractor);
  • Fixed RMat input support in the PlaidML backend: #19782;
  • Added ARM NEON optimizations for Fluid AbsDiffC, AddWeighted, and bitwise operations: #18466, #19233;
  • Other various static analysis and warning fixes;
  • Documentation:
  • [GSoC] Added TF and PyTorch classification conversion cases: #17604
  • [GSoC] Added TF and PyTorch segmentation conversion cases: #17801
  • [GSoC] Added TF and PyTorch detection model conversion cases: #18237
  • Updated documentation to address Wide Universal Intrinsics (WUI) SIMD API: #18952
  • And many other great contributions from OpenCV community:
  • core: add cuda::Stream constructor with cuda stream flags: #19286
  • highgui: expose VSYNC window property for OpenGL on Win32: #19408
  • highgui: pollKey() implementation for w32 backend: #19411
  • imgcodecs: Added Exif parsing for PNG: #19439
  • imgcodecs: OpenEXR compression options: #19540
  • imgproc: connectedComponents optimizations: (Spaghetti Labeling): #19631
  • videoio: Android NDK camera support #19597
  • (opencv_contrib) WeChat QRCode module open source: #2821
  • (opencv_contrib) Implemented cv::cuda::inRange(): #2803
  • (opencv_contrib) Added algorithms from Edge Drawing Library: #2313
  • (opencv_contrib) Added Python bindings for Viz module: #2882

New in OpenCV 4.1.1 (Oct 10, 2019)

  • DNN module:
  • 3D convolution networks initial support. There are Convolution, BatchNorm, Pooling, Eltwise layers implemented. Deconvolution3D layer is supported with DNN_BACKEND_INFERENCE_ENGINE only for now. Check Action recognition sample.
  • Intel Inference Engine backend:
  • 2018R5 release is now minimal supported version
  • Asynchornous inference support. Use cv::dnn::Net::forwardAsync which returns std::future instance. Check updated object detection samples for details: C++, Python
  • OpenCV face detection network efficiency on a single Intel Neural Compute Stick 2:
  • sync x3 asynchronous forwards
  • 26.43 FPS 53.2 FPS (x2.01)
  • details: https://github.com/opencv/opencv/pull/14516
  • Deep learning networks visualization diagrams using dot files (cv::dnn::Net::dumpToFile).
  • A lot of improvements for ONNX and TenforFlow importers.
  • Performance improvements:
  • AVX512 SIMD backend for wide universal intrinsics (w.u.i.)
  • More optimizations using wide universal intrinsics
  • Android support:
  • Added CameraActivity utility class to automate Camera permission handling on Android
  • Changed default C++ runtime: c++_static -> c++_shared
  • Unified code for frame size selection between JavaCamera2View / JavaCameraView
  • And many other great patches from OpenCV community:
  • Added IPPE method for planar pose estimation in solvePnP ( https://github.com/opencv/opencv/pull/14362 )
  • Added solvePnPRefineLM and solvePnPRefineVVS ( https://github.com/opencv/opencv/pull/14431 )
  • Logging revamp ( https://github.com/opencv/opencv/pull/13909 by @kinchungwong )
  • opencv_contrib: Tracking-by-Matching approach
  • opencv_contrib: added AR samples into ovis module
  • Breaking changes:
  • solveP3P, solvePnP and solvePnPGeneric return result in double precision unless the parameters are not empty

New in OpenCV 3.4.3 (Aug 29, 2018)

  • Further extended dnn module, documentation improvements, some other new functionality and bug fixes.

New in OpenCV 3.3.0 (Aug 4, 2017)

  • Greatly improved Deep Learning module and lots of optimizations.

New in OpenCV 3.1 (Dec 21, 2015)

  • There have been many successful projects this year (student and mentor(s) are listed after the project name), and the results are available as a part of OpenCV 3.1 (partially in the main repository, but mostly opencv_contrib):
  • Omnidirectional Cameras Calibration and Stereo 3D Reconstruction - opencv_contrib/ccalib module (Baisheng Lai, Bo Li)
  • Structure From Motion - opencv_contrib/sfm module (Edgar Riba, Vincent Rabaud)
  • Improved Deformable Part-based Models - opencv_contrib/dpm module (Jiaolong Xu, Bence Magyar)
  • Real-time Multi-object Tracking using Kernelized Correlation Filter - opencv_contrib/tracking module (Laksono Kurnianggoro, Fernando J. Iglesias Garcia)
  • Improved and expanded Scene Text Detection - opencv_contrib/text module (Lluis Gomez, Vadim Pisarevsky)
  • Stereo correspondence improvements - opencv_contrib/stereo module (Mircea Paul Muresan, Sergei Nosov)
  • Structured-Light System Calibration - opencv_contrib/structured_light (Roberta Ravanelli, Delia, Stefano Fabri, Claudia Rapuano)
  • Chessboard+ArUco for camera calibration - opencv_contrib/aruco (Sergio Garrido, Prasanna, Gary Bradski)
  • Implementation of universal interface for deep neural network frameworks - opencv_contrib/dnn module (Vitaliy Lyudvichenko, Anatoly Baksheev)
  • Recent advances in edge-aware filtering, improved SGBM stereo algorithm - opencv/calib3d and opencv_contrib/ximgproc (Alexander Bokov, Maksim Shabunin)
  • Improved ICF detector, waldboost implementation - opencv_contrib/xobjdetect (Vlad Shakhuro, Alexander Bovyrin)
  • Multi-target TLD tracking - opencv_contrib/tracking module (Vladimir Tyan, Antonella Cascitelli)
  • 3D pose estimation using CNNs - opencv_contrib/cnn_3dobj (Yida Wang, Manuele Tamburrano, Stefano Fabri)
  • Besides GSoC, we have multiple contributions from the community; below is the partial list of contributed functionality:
  • plot module - Nuno Moutinho
  • ni-black thresholding algorithm - ximgproc, Samyak Datta
  • Superpixel segmentation using Linear Spectral Clustering, SLIC superpixels - ximgproc, Balint Cristian
  • HDF (HDF5) support module - Balint Cristian
  • Depth to external RGB camera registration - rgbd, Pat O'Keefe
  • Computing normals for a point cloud - rgbd, Félix Martel-Denis
  • Fuzzy image processing module - Pavel Vlasanek
  • Rolling guidance filter - ximgproc, Zhou Chao
  • 3x faster SimpleFlow - optflow, Francisco Facioni
  • Code and docs for CVPR 15' paper "DNNs are easily fooled" - Anh Nguyen
  • Efficient Graph-based image segmentation algorithm - ximgproc, Maximilien Cuony
  • Sparse-to-dense optical flow - optflow, Sergey Bokov
  • Unscented Kalman Filter (UKF) and Augmented UKF - tracking, Svetlana Filicheva
  • Fast Hough Transform - ximgproc, xolodilnik
  • Improved performance of haartraining - Teng Cao
  • Python samples made compatible with Python 3 - bastelflp
  • There are multiple new features in the OpenCL layer, resulted from our collaboration with Intel Corporation:
  • Improved/extended interoperability with DirectX 9, 10, 11. That includes conversions between DX Surface and UMat, with number of copying operations reduced where possible. See opencv/samples/directx.
  • Interoperability with Video Acceleration API on Linux. This feature requires Intel Media Server Studio (https://software.intel.com/en-us/intel-media-server-studio/try-buy) and uses Intel's cl_intel_va_api_media_sharing extension to OpenCL. See opencv/samples/va_intel
  • OpenCLOpenGL interoperability via cl_khr_gl_sharing extension. It's possible now to convert OpenGL textures and OpenGL buffers to/from UMat. See opencv/samples/opengl.
  • OpenCLOpenCL interoperability. It means, people can now use OpenCL-accelerated OpenCV together with their custom OpenCL code and/or other OpenCL libraries. See opencv/samples/opencl for details.
  • Support for Camera2 API in Android 5+. See opencv/samples/android/tutorial-4-opencl, the tutorial that demonstrates 3 ways of processing data from camera:
  • purely CPU pipeline (3-4 fps on our test device)
  • OpenCV-based using UMat and transparent API (10-13 fps on the same device)
  • direct use of OpenCL (28-30fps). This is the fastest method, as you can see, because it uses OpenCL images, whereas more universal T-API has to use OpenCL buffers.
  • The iOS framework (opencv2.framework) can now be configured to include both opencv and opencv_contrib functionality. Previously, there were 2 separate frameworks, but because of the include directory names ("opencv2/...", regardless of whether some module is from opencv or from opencv_contrib), the produced opencv_contrib was unusable.
  • OpenCV 3.1 supports fresh OSes from Microsoft and Apple, as well as the newest development tools (VS2015 and Xcode 7, respectively).
  • IPPICV (a specially-for-opencv free-of-charge subset of IPP (https://software.intel.com/en-us/intel-ipp) that has been kindly provided by Intel Corporation) is now based on IPP 9.0.1, which should make OpenCV even faster on modern Intel chips.
  • HAL (Hardware Acceleration Layer), as a separate OpenCV module, opencv_hal, lived a short yet a bright life; we decided to split it by parts and move the parts into the respective regular OpenCV modules (core, imgproc etc.). It will help us to keep the dependency graph clean and sane.
  • Added 2 examples (see opencv/samples/hal) on how to provide external accelerated versions of the HAL functions; note that an external implementation does not have to implement all of the HAL. The supplied README explains how to build the custom HAL accelerator, and how to build OpenCV with such a custom HAL replacement: https://github.com/Itseez/opencv/tree/master/samples/hal
  • Added some more few functions to the HAL (arithmetic operations, split, merge); much more to come in OpenCV 3.2
  • Over 420 pull requests to opencv and over 100 pull requests to opencv_contrib have been merged in since 3.0.0. Big thanks to all the people who submitted bug fixes, new functionality and other small and big improvements!

New in OpenCV 3.0 (Jun 5, 2015)

  • Over 200 bugs reported at http://code.opencv.org/projects/opencv/issues have been resolved/closed. It includes many fixes in docs, build scripts, python wrappers, core, imgproc, photo, features2d, objdetect, contrib modules, as well as some performance improvements etc.
  • Added pthread-based backend for cv::parallel_for_. It means that all the parallel processing should be available out-of-the-box on any POSIX-compatible OS, including QNX and such. You are welcome to try it out.
  • OpenCV Manager on Android has been completely rewritten in Java and now supports both OpenCV 2.4 and 3.0. After a bit more testing we will put it to Google Play. The other, a bit sad but inevitable news - we had to drop support for nativecamera on Android. It used some undocumented API and never worked stable.
  • Many excellent contributions in opencv_contrib/xfeatures2d:
  • Christian Balint contributed long-awaited DAISY features
  • He also contributed improved version of rotation-invariant BRISK descriptor by Gil Levi
  • Gil Levi contributed very nice LATCH binary descriptor that outperforms all presently available in OpenCV binary descriptors (ORB, BRIEF, AKAZE etc.) and is comparable with heavier and slower SURF.

New in OpenCV 3.0 Beta (Apr 23, 2015)

  • Performance of OpenCL-accelerated code on Intel Iris Graphics and Intel Iris Pro Graphics has been improved by 10%-230%. That includes faster Canny edge detector, Laplacian, StereoBM, BruteForceMatcher, BackgroundSubtractorMOG2, StitchingWarpers etc. New OpenCL kernels were implemented for several functions: HoughLines, HoughLinesP, cvtColor (selected modes), Gemm, DFT.
  • About 40 commonly used image processing functions have been optimized using vector NEON instructions, so OpenCV 3.0 beta should run noticeably faster on modern ARM chips.
  • Java bindings have been substantially improved. We now have bindings for the updated features2d, background subtractor classes, a part of opencv_contrib etc.
  • On x86 and x64 platforms OpenCV binaries include and use a subset of Intel Integrated Performance Primitives (Intel IPP) by default. OpenCV 3.0 beta includes a subset of Intel IPP 8.2.1 with additional optimization for AVX2.

New in OpenCV 2.4.9 (Apr 18, 2014)

  • Several improvements in OpenCL optimizations (ocl::sum, ocl::countNonZero, ocl::minMax, bitwise operationss, Haar face detector, etc)
  • Multiple fixes in Naitve Camera (NativeCameraView, cv::VideoCapture);
  • Improved CUDA support for all CUDA-enabled SoCs.
  • New VTK-based 3D visualization module viz stabilized and back-ported to 2.4 branch.
  • The module provides a very convenient way to display and position clouds, meshes, cameras and trajectories, and simple widgets (cube, line, circle, etc.).
  • 156 pull requests have been merged since 2.4.8
  • 55 reported bugs have been closed since 2.4.8

New in OpenCV 2.4.7 (Nov 11, 2013)

  • now 'ocl' module can be built without installing OpenCL SDK (Khronos headers in OpenCV tree)
  • dynamic dependency on OpenCL runtime (allows run-time branching between OCL and non-OCL implementation)
  • changing default OpenCL device via OPENCV_OPENCL_DEVICE environment variable (without app re-build)
  • refactoring/extending/bug-fixing of existing OpenCL optimizations, updated documentation
  • new OpenCL optimizations of SVM, MOG/MOG2, KalmanFilter and more
  • new optimization for histograms, TV-L1 optical flow and resize
  • updated multi gpu sample for stereo matching
  • fixed BGRYUV color conversion and bitwize operations
  • fixed several build issues
  • Android NDK-r9 (x86, x86_64) support;
  • Android 4.3 support: hardware detector (Bugs #3124, #3265, #3270) and native camera (Bug #3185);
  • MediaRecorder hint enabled for all Android devices with API level 14 and above;
  • Fixed JavaCameraView slowdown (Bugs #3033, #3238);
  • Fixed MS Certification test issues for all algorithmical modules and highgui, except OpenEXR and Media Foundation code for camera;
  • Implemented XAML-based sample for video processing using OpenCV;
  • Fixed issue in Media Foundation back-end for VideoCapture (#3189);

New in OpenCV 2.4.3 (Nov 6, 2012)

  • A lot of good stuff from the Google Summer of Code 2012 has been integrated; this was a very productive summer.
  • Significantly improved and optimized Android and iOS ports.
  • Greatly extended GPU (i.e. CUDA-based) module.
  • The brand new ocl (OpenCL-based) module that unleashes GPU power also for AMD and Intel GPU users. It’s not included into the binary package, since there are different SDKs, and it’s not turned on by default. You need to run CMake and turn on “WITH_OPENCL”. Also, please note that this is very first version of the module, so it may be not very stable and not very functional.
  • Much better performance on many-core systems out of the box. You do not need TBB anymore on MacOSX, iOS and Windows. BTW, the binary package for Windows is now built without TBB support. Libraries and DLLs for Visual Studio 2010 use the Concurrency framework.
  • About 130 bugs have been fixed since 2.4.2.
  • Since 2.4.3rc we fixed several more problems, in particular some compile problems with iOS 6 SDK.