This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Previous Change Logs:
version:5.1.0
November, 2026
First feature update for OpenCV 5.x has been released.
-
Core module:
- Added broadcasting element-wise engine for arithmetic, comparison and math functions, and
cv::texprfor fused expressions #29426 - Added FP8 depths
CV_8F_E4M3FNandCV_8F_E4M3FNUZwith conversions, random fill and FileStorage support #29369, and SIMD conversions #29832 - Added FP8 support to split/merge/mixChannels #30294, Mat printing #30315, findNonZero #30341, countNonZero/hasNonZero #30463, minMaxLoc/minMaxIdx #30526, LUT #30534 and norm #30579
- Added support for all 5.x depths in sort/sortIdx #30506 and checkRange #30249, #30539, and for CV_Bool/FP8 in reduceArgMax/reduceArgMin #30537
- Added CV_8S and CV_32S input support to cv::reduce #30570 and CV_16F/CV_16BF support to patchNaNs #30615
- Added N-D
cv::concat,cv::split,cv::slice,cv::repeatandcv::transposewith axis order,transposeNDis deprecated #30081, #30207 - Added
cv::squeeze,cv::unsqueeze,cv::flattenand N-Dcv::reshape#30091 - Added N-D
cv::reducewithReduceParamsand REDUCE_PROD, REDUCE_L1, REDUCE_L2, REDUCE_LOG_SUM, REDUCE_LOG_SUM_EXP #30157 - Added CUDA-backed UMat allocator
cv::cuda::getCudaAllocator()with explicit host/device transfers #29451, #30259, #29764 - Added
cv::linearAssignment(), a Jonker-Volgenant rectangular assignment solver, e.g. for track-to-detection matching #29963 - Added Eigen conversions for cv::Affine3 and cv::Quat #30020
- Added v_select for 64-bit integer lanes to universal intrinsics #30071
- Made cvRound/cvFloor/cvCeil, saturate_cast and SIMD rounding saturate on all platforms, added cvTrunc and cvRound64 #30007
- Removed deprecated comma initializer API (
Mat_ << a, b, c) for Mat_ and Matx #29948 - Fused
a*alpha + b*beta + gammaincv::texprinto a single addWeighted kernel #29953 - Optimized fractional cv::pow in the new element-wise engine #30325
- Vectorized and parallelized DFT/DCT with a new universal intrinsics implementation, and parallelized matchTemplate #30061
- Optimized norm, batchDistance and Hamming distance with SIMD, speeding up ORB/BRISK matching #29479, #29335
- Vectorized masked norm and normDiff for the remaining depths #30192
- Optimized countNonZero with AVX-512 signmask path #29480, #29390
- Enabled AVX-512 dispatch for sum #29400 and minMaxIdx/minMaxLoc #29340
- Vectorized meanStdDev #29339 and disabled slower IPP meanStdDev and RVV mean HAL paths #29373
- Optimized gemm with universal intrinsics, kept off on 32-bit x86 and macOS x64 #29496, #29242
- Improved gemm dispatch to avoid LAPACK call overhead on small matrices #29909
- Parallelized sort/sortIdx #29192 and enabled IPP calls for them #29477
- Optimized LUT and equalizeHist with SIMD #29250
- Added SIMD fast path for findNonZero on 8-bit inputs, up to 15x faster on sparse masks #30430
- Added compile-time fast paths for InputArray/OutputArray accessors, effective with LTO #29989
- Used AutoBuffer instead of std::vector for temporary buffers in more places #28907
- Enabled non-exact IPP optimizations if build-time algorithm hint allows it #29431
- Moved IPP math functions from core module to HAL #29306
- Added ArmPL HAL backends for cv::gemm #30039, cv::SVD::compute #30059 and cv::invert with DECOMP_LU #30080
- Optimized core functions for RISC-V RVV: reduce #29923, #29930, SVD #29987, gemm #30037, CV_64F arithmetic #30069, interleaved loads/stores #30147
- Added RISC-V RVV HAL kernels for convertScale 32F to 16S #29917 and transpose of 3-channel types #30075, optimized RVV HAL norm: FP32 L2 #30000, masked integer norms for multi-channel input #30018
- Switched RVV scalable universal intrinsics from LMUL=2 to LMUL=1 #29493
- Fixed broadcasting of scalars, small and empty matrices in the new element-wise engine #30185, #30220, #30245
- Fixed addWeighted with CV_64F output or CV_Bool input #29883, reuse of named
cv::texprvalues #29937 and 8-bit multiply/divide precision #30272, #30643 - Fixed convertTo saturation and precision for conversions from and to CV_32U, CV_64U and CV_64S #29965, #30199, #30206, #30466
- Fixed integer overflows in cv::sum on CV_32S/CV_32U #30003, cv::absdiff on CV_64S #30348 and cv::norm(NORM_L1) on CV_32S #30159, #30634
- Fixed bitwise_not and operator~ on CV_Bool to act as a logical NOT #30611
- Improved handling of unsupported depths: inRange throws instead of crashing on CV_Bool #30154, sum names the rejected type #30329
- Fixed out-of-bounds table lookups for 5.x depths in OpenCL helpers predictOptimalVectorWidth #29356, kernelToStr #30266 and typeToStr #30375
- Fixed UMat operations on 5.x depths: CPU fallback for CV_16BF arithmetic #30383, saturating conversions to CV_32U/64U/64S #30386, scalar compare #30393
- Fixed stack overflows and out-of-bounds writes when FileStorage reads malformed files #29301, #29348, #29945, #30133
- Fixed FileStorage reading of integers above INT_MAX as float/double #29368 and of numbers with an upper-case exponent #30656
- Fixed FileStorage JSON writer to emit valid string escapes #30141
- Fixed FileStorage release leaks, state reset and unbalanced structure closing #30647
- Restored in-place support for extractChannel #29632
- Fixed cv::min/cv::max crash on empty matrices #29759
- Fixed cv::broadcast with zero-sized dimensions #29911
- Fixed use-after-scope when Mat::mul() is given a scalar #29447
- Fixed InputArray::empty() for std::vector #30012 and OutputArray::release() for std::array #30118
- Fixed gemm with CV_64FC2 output aliasing an input #30319
- Fixed LU/QR fallback running on a transposed matrix when the LAPACK HAL declines #30479
- Fixed calcCovarMatrix rejecting a non-continuous mean with COVAR_USE_AVG #30008
- Fixed kmeans crash and out-of-bounds access on NaN or huge input values #30117
- Fixed signed overflow in borderInterpolate with BORDER_WRAP #29884
- Fixed Rect_ intersection of disjoint rectangles #30162
- Fixed cv::Quat sin/cos/sinh/cosh for very small vector parts #30323
- Fixed CommandLineParser silently accepting invalid boolean values #29877
- Fixed Unicode temp path handling on Windows #28935
- Fixed memory leak in cv::glob on WinRT #30032
- Fixed memory leak in OpenCL extensions gathering for OpenGL interop #28981
- Fixed function pointer signature mismatches reported by Clang CFI #30040
- Fixed false MemorySanitizer reports: removed leftover inline assembly #29367 and annotated LAPACK outputs #29572
- Fixed undefined behavior from misaligned loads in SSE v_lut #29274
- Fixed universal intrinsics: RVV v_load_expand lane count #29921, RVV f64 v_reduce_sum precision #30085, int8 v_dotprod_expand overflow on NEON and MSA #30345
- Fixed wrong DFT results in the RVV HAL odd-radix path when built with GCC 15 #29906
- Fixed memory alignment and stack usage of the new element-wise engine on ARMv7 and RISC-V #29925, #30028, #30222, #30660
- Fixed cv::flip on unaligned data on strict-alignment platforms such as ARMv7 #30034
- Fixed FastCV HAL transpose for row steps that are not a multiple of the element size #30637
- Fixed parallel_for_ skipping work with the PPL backend on Windows ARM64 #29833
- Fixed exit deadlock with the TBB backend on Windows by keeping the arena alive at teardown #30072
- Fixed ppc64 CPU feature detection when elf_aux_info() fails #30334
- Added broadcasting element-wise engine for arithmetic, comparison and math functions, and
-
Imgproc module:
- Switched text rendering from STB to HarfBuzz, fixing complex scripts (Arabic, Devanagari) and font ligatures #29300
- Reduced text rendering footprint, made italic and Unicode fonts optional and added
cv::FontFace::setBuiltinFont#30109 - Added
cv::alphaCompositewith Porter-Duff compositing operators #29784 - Added RGB/BGR to Oklab and Oklab to RGB/BGR color conversions to cvtColor #30051
- Added CV_Bool input support to distanceTransform #29597, connectedComponents #29622, morphological operations #29799 and matchTemplate masks #29677
- Vectorized imgproc functions for platforms without IPP such as Windows on ARM: Laplacian column filter #30187, pyrUp #30188, pyrDown 8UC3 #30190, adaptiveThreshold #30189, 16-bit 1D calcHist #30194, 32F boxFilter and blur #30197
- Parallelized calcHist with thread-local histograms #30092 and pyrMeanShiftFiltering #30441
- Optimized cvtColor loop tails and added AVX-512 dispatch for RGB, HSV and YUV color conversions #28992
- Optimized first BGR2Lab and BGR2Luv call by building the color LUT faster #29253
- Improved parallelism and memory access of the HoughLines accumulator #29059
- Optimized EMD (Earth Mover's Distance) solver performance #29194
- Vectorized getRectSubPix for 8U input with 32F output #30050
- Vectorized float32 bilinear warpAffine and remap for images with more than 4 channels #30650
- Migrated moments SIMD for 16-bit input to scalable universal intrinsics (wider AVX2/AVX-512 and RVV lanes) #28881
- Fixed floodFill never taking its fast path for the simple case #29187
- Fixed matchTemplate TM_SQDIFF precision loss for CV_8U images #29096
- Fixed precision loss in OpenCL matchTemplate with TM_CCOEFF_NORMED #29856, #30407
- Fixed remap INTER_NEAREST rounding with fixed-point maps on CPU and OpenCL #29145
- Fixed out-of-bounds table lookup in remap INTER_LANCZOS4 for 16BF, 32U, 64U and 64S depths #30156
- Fixed remap and warpPerspective silently corrupting N-D (batched) input by rejecting it with a clear error #30160
- Fixed infinite loop and slow border reflection in warping for 1-pixel-wide images and far out-of-range coordinates #29867, #29899
- Fixed INTER_CUBIC warping of 64F images computing in an integer pixel buffer #29868
- Fixed pointer and integer overflow UB in scalar warp kernels and warpAffine coordinate rounding #30137, #30307
- Fixed NaN in phaseCorrelateIterative for float32 input #29871
- Fixed phaseCorrelate overwriting its inputs when a window is applied #30320
- Fixed medianBlur crash for ksize >= 257 on 8-bit images #30121
- Fixed wrong edge results of in-place boxFilter on ROIs #30365
- Fixed segfault in connectedComponents on zero-size input #30225
- Fixed compareHist HISTCMP_CHISQR_ALT on sparse histograms ignoring bins present only in the second histogram #30342
- Fixed out-of-bounds reads in OpenCL cvtColor kernels for 3-channel input #30274
- Fixed out-of-bounds read in OpenCL threshold for 32U, 64U and 64S input #30252
- Fixed missing tipLength validation in arrowedLine #29191
- Added input checks for issues found by fuzzing in imgproc, core, geometry, objdetect and imgcodecs #30286
- Fixed division by zero in the IPP path of HoughLines and HoughLinesP with threshold = 0 #30644
- Extracted following IPP integrations as HAL: resize #29332, #29374, cvtColor #29389, #29397, boxFilter #29414, #29420, filter2D #29428, #29427, Sobel and Scharr #29417, Canny #29434, distanceTransform #29467, #29463, matchTemplate #29466, #29464, threshold #29491, bilateralFilter #29409, getRectSubPix #29514
- Restored IPP integration for Sobel and Scharr #29328
- Enabled IPP warpAffine and warpPerspective in IPP HAL #29771, #30520
- Restored IPP matchTemplate for newer IPP and ICV packages #29886
- Fixed IPP getRectSubPix for windows crossing the image border #30457
- Extended RISC-V RVV HAL: resize INTER_NEAREST and INTER_NEAREST_EXACT #29430, boxFilter 8UC3/8UC4 and 7x7 with GaussianBlur 8UC3 #29440, boxFilter 32FC3 #30270, HSV/HLS to BGR #30516
- Made RVV HAL resize bit-exact for 8U INTER_LINEAR #29473
- Recovered calcHist performance regressions on Windows ARM64 #30626
- Fixed left-edge extrapolation in Carotene bilinear resize when upscaling horizontally #30076
- Fixed integer overflow in NDSRVP HAL filter2D padding buffer size #29442
-
DNN module:
- Removed the classic DNN engine, the new engine is the only one;
EngineTypeis nowENGINE_AUTO,ENGINE_OPENCV,ENGINE_ORT#29341 - Removed the TensorFlow importer, ONNX and TFLite remain supported #29474
- Added CUDA backend to the new engine: per-op executors #29286, UMat device buffers #29807, transformer layers and CUDA Graph replay #30439
- Added cuDNN JIT support (
WITH_CUDNNJIT, cuDNN graph API with runtime-compiled engines) and full ResNet coverage on CUDA #29658, #30415 - Added ONNX layers: LpPool #29217, Scan #29577, CumProd and CausalConvWithState #29579, BitCast and inverse real DFT #29594, ImageDecoder #29785, Compress #30576
- Added LinearAttention and FlexAttention layers #29624 and past/present KV cache support in Attention #29333
- Added
Net::reserveKVCache()to pre-allocate attention KV caches, up to 4.95x faster LLM token generation #29642 - Added GroupQueryAttention rotary embeddings for Granite-Docling and PaddleOCR-VL #29618, MultiHeadAttention bias and key_padding_mask #30311
- Added quantization layers: DynamicQuantizeLinear #29386, #29018, ConvInteger and MatMulInteger #30416, com.microsoft MatMulNBits with a Qwen3-TTS sample #29666
- Added FP8, FP4, INT4/UINT4 and E8M0 support to ONNX Cast/CastLike #29360, FP8 model support #29834, INT16/UINT16 QuantizeLinear/DequantizeLinear #30512
- Extended data type support in new-engine layers (If/Loop/Scan, Range, CumSum, pooling, Gemm, MatMul, Abs/Sign, Gather/Scatter) #29782, #29786
- Extended Resize with antialias, axes, keep_aspect_ratio_policy and half_pixel_symmetric #29323, GridSample with bicubic mode and Dropout with mask output #29783
- Supported ONNX boolean tensors stored in int32_data #30507
- Extended the TFLite importer to run more models, including YOLO, on the new engine #29569
- Generalized
cv::dnn::Tokenizerwith WordPiece and Unigram methods, adding BERT and ALBERT support #29675 - Added
interpolationparameter toblobFromImage,blobFromImagesandImage2BlobParamsfor bit-exact resize withINTER_LINEAR_EXACT#30131 - Changed
Net::forward()to return outputs in the FP16/BF16 type the model declares,Modelclasses still return float #30182 - Improved ONNX conformance to 83.9% of the ONNX backend scoreboard, fixing auto_pad, PRelu, LSTM, Attention and more #29560, #29931, #30181, #30514, #30629
- Reworked graph fusion into backend-agnostic chain fusion (
fuseChains), up to 2.27x faster on MPHand and 1.96x on EfficientNet #29656, #30088, #30273 - Kept more ops in block layout and folded Mul/Add into BatchNorm (RAFT 1.40x, DenseNet121 1.44x faster) #30313
- Added fast paths for ViT LayerScale folding, patch-embedding Conv, any-stride 3x3 Conv and block-layout Split #30268
- Folded Shape of static-shape inputs #30065 and merged equal constants and duplicate nodes in the ONNX importer (RAFT 1.39x faster) #30276
- Re-initialized only layers whose input shapes changed, so dynamic-shape models no longer repack weights on every run #29595
- Sized convolution and depthwise parallel tasks by amount of work (MPPose 1.64x, MPPalm 1.45x, YuNet 1.33x faster) #30302
- Optimized ConvTranspose/Deconvolution with MLAS GEMM + col2im, spatial threading and tap tables (SAM2 decoder 68.5 to 36.8 ms, 1 thread) #30396, #30044, #30001
- Optimized int8 inference: faster first conv, AVX-VNNI depthwise conv, multi-threaded MatMul, int8 asymmetric padding (DenseNet121 int8 7.4x faster) #30289
- Optimized LSTM with batched input projection, weight pre-packing, parallel directions and vectorized gates (CRNN 17.5 to 2.8 ms) #29673, #30309, #30193
- Sped up Attention on CPU with MLAS and supported 4D input (SAM3 decoder) #30277, removed the unused quadratic workspace in MLAS attention #30405
- Skipped MatMul output zero-fill when there is no bias #30297
- Vectorized 13 transcendental activations #29402, #29377 and Sigmoid #29214
- Moved element-wise layers onto the core broadcasting element-wise engine #30083
- Reduced ONNX import memory by memory-mapping external initializers #30283 and releasing initializers once copied #29732
- Fixed broadcast batched MatMul with constant weights #30097 and rank-1 A in the MatMul to Gemm rewrite #30103
- Fixed Gelu(approximate='tanh') #30104, Resize with scales input #30105, Softmax before opset 13 #30106, Reduce over 3+ axes #30108
- Supported global pooling for inputs with more than two spatial dimensions #30107
- Fixed GRU output selection, reverse direction, sequence_lens and clip #30101, LSTM with batch-first layout #29702
- Fixed attention fusion when a Q/K/V projection has no bias #30284
- Accepted TopK with K = 0 and fixed broadcast element-wise ops in block layout #30285
- Fixed FP16 BatchNorm in block layout writing no output and used the full vector width in blocked pointwise kernels #29836
- Fixed Gather + Cast fusion dropping the Cast #29621
- Fixed Einsum keeping stale shape state when operand dimensions change #29829
- Fixed GatherND division by zero on empty indices #30503
- Fixed QuantizeLinear INT4/UINT4 output saturation #30596
- Fixed getFLOPS for models with FP16 inputs #29548
- Removed false-positive "Targets are not supported" warning for the CPU target #29457
- Fixed blobRectsToImageRects when the image is not resized #30287 and UMat ROI in getChannelFromBlob #29571
- Fixed OpenCL activation, LRN and fused conv kernels failing to build due to std::pow #30437
- Fixed ONNX Runtime backend build, DLL lookup and non-ASCII model paths on Windows #29309, #29806
- Removed Caffe protobuf leftovers and fixed builds with external protobuf and WITH_PROTOBUF=OFF #29425, #30073
- Added ONNX importer checks against malformed models: tensor payload size #29370, #29314, Resize scales index #30201, QLinearConv scales #30395
- Added TFLite importer checks: kernel scale count #29321, padding and resize tensor length #29371, operator tensor indices #30335
- Fixed out-of-bounds access on malformed models in Einsum #29418, CropAndResize #30510 and SoftmaxCrossEntropyLoss #30530
- Accelerated AArch64 Conv2 with cache-local blocked Winograd (1.47x faster on DM-Count) #30554
- Enabled vendored MLAS on Windows ARM64 with MSVC #30332
- Fixed eltwise memory traversal causing a slowdown on Windows ARM64 #30041
- Optimized blobFromImages HWC to NCHW conversion with NEON on ARM64 #29316
- Fixed NaN in TanH for large inputs on ARMv7 NEON by clamping the input #30475
- Vectorized new-engine fp32 convolution for RISC-V RVV and fixed block layout for VLEN > 128 #29357, #29304
- Added RVV kernels for fastConv convolution: convBlock_F32 at any VLEN and MR=1 depthwise-remain #29403, #29405, #30336, #29517
- Added RVV Winograd F(6,3) convolution #29411 and fixed its out-of-bounds access at VLEN > 256 #29484
- Added RVV FP32 fastGemm micro-kernel with packing #29421 and register-resident fastGemmThin #29574
- Added RVV kernel for new-engine int8 convolution #29424
- Vectorized RVV normalization layers #29598 and attention softmax #29601
- Added DNN HAL hooks for pooling, depthwise and general convolution with RVV HAL kernels #29625, #29628, #29689
- Removed the classic DNN engine, the new engine is the only one;
-
Features module:
- Added
cv::XFeat, a DNN-based feature detector and descriptor #29361 - Added OpenCL implementation of SIFT detector and descriptor for UMat input, up to 1.87x over CPU at 1080p #29450
- Added DISK variant (
LG_DISK) to LightGlueMatcher alongside ALIKED #29392 - Added
LightGlueMatcher::setKeypointNormalization()withLG_NORM_MAX_SIDEmode matching the LightGlue reference #30562 - Added
CV_Boolmask support to SIFT #29679 - Improved FAST and ORB detector parameter validation #29201
- Optimized FAST corner pre-screen in RISC-V RVV HAL #29197
- Fixed MSER discarding stable regions via minDiversity #29653 and failing on empty images #29752
- Fixed BFMatcher mask handling when crossCheck is enabled #29506
- Fixed
cv::XFeatletterbox inverse mapping of keypoints #30551 - Fixed
LightGlueMatcher::match()throwing on an empty train descriptor set #30601
- Added
-
3D module:
- Added OpenGL-based 3D visualizer
cv::viz3dfor meshes, point clouds, RGB-D frames and camera trajectories #29616 - Added 3D Gaussian Splatting support:
cv::loadGaussianSplatsand rendering in viz3d #29729 - Added point-cloud processing: outlier removal, normal orientation, Ball-Pivoting meshing, bounding volumes #29682
- Added monocular visual odometry
cv::slam::VisualOdometryas the first step toward SLAM #29331 - Added ColorHashTSDF volume type combining hashed TSDF storage with color #27823
- Fixed findPlanes mishandling 3-channel point input #29742
- Fixed NaN bypass in TSDF volume integration bounds check #29766
- Fixed out-of-bounds access in PLY and OBJ loaders on malformed files #29866, #30053, #30449
- Added OpenGL-based 3D visualizer
-
Calib module:
- Exposed calibrateHandEye and calibrateRobotWorldHandEye to Python #29584
- Added float64 point support to calibrateCamera, stereoCalibrate, initCameraMatrix2D and registerCameras #30176
- Added support for non-contiguous point vectors in calibrateCamera #30119
- Improved fisheye extrinsic refinement for ill-conditioned views using Levenberg-Marquardt #30070
- Made the Schur complement calibration solver deterministic and lock-free, 1.45x faster with 32 threads #30175
- Fixed CALIB_DISABLE_SCHUR_COMPLEMENT flag value colliding with CALIB_TILTED_MODEL #29429
- Fixed calibrateCamera and stereoCalibrate fitting k3 for 4-element distortion vectors #29910
- Fixed fisheye calibration for column-shaped point arrays #30202
- Replaced fisheye calibration asserts with descriptive errors and rejected legacy 4.x numeric fisheye flags #30173
-
Geometry module:
- Added
CV_Boolmask support to boundingRect #29580 - Removed unneeded logger.hpp include from public geometry headers #29416
- Vectorized fisheye::undistortPoints for double-precision input, 2.38x faster on RISC-V #29609
- Fixed boundingRect for float coordinates outside the int range #29857
- Fixed strict-aliasing UB in convexHull #29714
- Fixed NaN result of getClosestEllipsePoints for a point at a circle's center #30116
- Fixed IPPE pose rotation vector for rotations near 180 degrees #30424
- Added
-
Stereo module:
- Fixed out-of-bounds access in validateDisparity #30344
-
Video module:
- Added
CV_Boolmask support to findTransformECC #29681 - Fixed TrackerVit input normalization that negated two color channels #30170 and clipped its box to the image #30394
- Fixed TrackerNano scale penalty and search crop scaling #30353
- Fixed heap-buffer-overflow in DISOpticalFlow when patch size exceeds the border size #29715
- Fixed DIS optical flow OpenCL kernel build on devices with subgroup support #30195
- Added input validation for OPTFLOW_USE_INITIAL_FLOW in calcOpticalFlowFarneback #30100
- Optimized calcOpticalFlowPyrLK with RISC-V RVV intrinsics #29518, #29947
- Enabled scalable universal intrinsics (RISC-V RVV) in DIS optical flow #29961 and VariationalRefinement #29954
- Added
-
Objdetect module:
- Used Delaunay triangulation in computeRNG for findCirclesGrid, up to 15x faster on large grids #29117
- Fixed speed regression in ArUco identify #29267
- Optimized ArUco to get border errors in one pass for both normal and inverted markers #29329
- Used validBitIdThreshold in ArUco refineDetectedMarkers #29252
- Made QRCodeDetector return an empty result instead of throwing on unsupported QR modes such as Hanzi #30123
- Bounded alphanumeric values in QR decodeAlpha before map lookup #29378
- Fixed MCC CCheckerDetector corner validation, non-deterministic output and uninitialized default chart type #29289, #29290, #30412
-
Photo module:
-
Flann module:
-
Imgcodecs module:
- Added support for boolean (CV_Bool) images in imwrite #29407
- Added 16-bit AVIF reading and writing with libavif 1.4.0+ #30426, #30431, #30519
- Added
IMWRITE_AVIF_ALPHA_QUALITYto set AVIF alpha plane quality independently from color #30499 - Added
IMWRITE_TIFF_COMPRESSION_LEVELfor DEFLATE, LZMA, ZSTD and WebP TIFF compression #30169 - Enabled WebP compression for TIFF with the bundled libtiff #30264
- Added fallback to LZW when the requested TIFF compression codec is not available #30271
- Optimized PNG header parsing by not copying IDAT data, up to 1.17x faster for images stored in one large IDAT chunk #29872
- Added validation of encoding parameter lists in imwriteanimation and imencodeanimation #30321
- Improved EXIF profile handling #29295, #29322
- Fixed out-of-bounds write when reading 2-channel PAM #29296
- Fixed pointer overflow in 16-bit color conversion helpers used by the TIFF decoder #29620
- Fixed TIFF row copy when decoding RGB images with IMREAD_COLOR_RGB #30129
-
VideoIO module:
- Added camera enumeration
cv::videoio_registry::enumerateDevices()and theopencv_camera_enumeratetool #29843, extended to Aravis #30290 - Added VideoWriter encoder controls for FFmpeg and GStreamer: bitrate, CRF, preset, GOP size and pixel format #30064
- Added automatic pixel format selection (color, Bayer, mono) and more FOURCC codes to the Aravis backend #29796
- Added FFmpeg 9.0 support #30513 and fixed the libavcodec version check for FFmpeg 8.0 releases #30327
- Fixed slow FFmpeg seek for streams without a start time, which degraded to a linear scan #30031, #30038
- Fixed colors of hardware-decoded FFmpeg frames by keeping frame properties after the GPU download #30127
- Fixed black frames when reading interlaced video with FFmpeg 8+ #30454
- Fixed crash or corrupted frames in FFmpeg VideoCapture when the pixel format changes mid-stream #29700
- Reduced log spam from unsupported picture format warnings in the FFmpeg backend #30055
- Fixed GStreamer crash when a capture pipeline fails to start #30089
- Fixed MSMF audio sample-rate validation and dropped last frame #29499, #29502
- Fixed SIGSEGV crash when releasing VideoWriter on iOS #29359
- Fixed CAP_PROP_GAIN with the uEye backend #29608
- Added camera enumeration
-
Highgui module:
- Added OpenGL wrappers
cv::ogl::VertexArray,Shader,Programand thecv::setOpenGlFreeCallbackwindow API #29485
- Added OpenGL wrappers
-
Python bindings:
- Added exact bfloat16 and float8 NumPy dtypes through ml_dtypes, enabled with
cv.setUseExactNumpyDtypes()#30183 - Changed int64 NumPy array conversion: arrays are narrowed to CV_32S only when all values fit, otherwise CV_64S is used #29594
- Exposed
saveWindowParametersandloadWindowParametersto Python #29585 - Added documentation signatures for hand-wrapped
createTrackbar,createButtonandsetMouseCallback#30549 - Improved typing stubs:
typingimport for Sequence results #30096, optional None outputs #30148, Scalar operands and optionalremapmap2 #30333, scalars inmin/max#30355, NumPy input toUMat#30357 - Fixed conversion of
Matwith a zero-length dimension to NumPy, an empty array of that shape is returned instead of None #29524 - Fixed NumPy dtype mapping of CV_64U and CV_16BF #29657
- Fixed silent loss of the channel axis for NumPy arrays with more than CV_CN_MAX channels, now reported as an error #29686
- Fixed int32 output arrays on Windows #29767, #29839
- Fixed handling of NumPy arrays with non-native byte order #30593
- Fixed empty
LD_LIBRARY_PATH/PATHentries added on cv2 import #29905
- Added exact bfloat16 and float8 NumPy dtypes through ml_dtypes, enabled with
-
Java bindings:
- Fixed Mat.get()/Mat.put() for 0D, 1D and N-D matrices #29851
-
JavaScript bindings:
- Added ReduceParams to JavaScript bindings #30288
- Fixed MCC classes missing from opencv.js by binding them under their 5.0 names #30428
- Restored deep copy behavior of
Mat.clone()with Emscripten 4+ #30433 - Fixed opencv.js generation for namespaced
Ptrfactories in contrib ximgproc (EdgeDrawing) #29387
-
Objective-C/Swift bindings:
- Fixed
VolumeTypeenum name clash on macOS #29262
- Fixed
-
Samples:
- Switched YOLOv3 in the object detection samples to a Darknet-converted ONNX model for better results #29515
- Fixed Python HoughLines/HoughLinesP samples for the 5.0 output shape change #29663
- Fixed Python odometry sample for 5.x bindings #30144
- Fixed orientation thresholding in the anisotropic image segmentation Python tutorial #29757
- Fixed OpenGL samples build: missing ptcloud dependency #29293, GCC 15 compatibility #29973
-
Documentation:
- Added tutorials on pre-built binaries and convex hull, HAL and DNN engine pages, extended universal intrinsics tutorial #29288
- Improved core documentation: Mat::type() bit layout #29981, getElemSize #29957, 1D Mat vector constructor #30380, module introduction for 5.1 #30598
- Fixed calibration docs: fisheye flags, calibrateCamera determinism, undistortPoints iterations #30174, chessboard and circles grid corner order #30208
-
Applications:
- Fixed interactive calibration tool dependencies for the 5.x module layout #29882
-
Build:
- Updated IPP ICV integration to IPP 2026.1.0 (20260922) #30078
- Updated KleidiCV to version 26.09 #30128
- Updated bundled libtiff to 4.7.2 #29864
- Updated FFmpeg for Windows to 9.0.2 (aom 3.15.0, vpx 1.17.0, openh264 2.7.0), fixing slow AV1 decoding #30515
- Fixed bundled OpenJPEG version reported as 2.5.3 instead of 2.5.4 #30404
- Added AVX_VNNI CPU dispatch target with an assembler check, fixing dnn builds with binutils older than 2.36 #29844
- Fixed IPP HAL functions ignoring the cv::ipp::useIPP() runtime switch #29395, #29462
- Fixed vendored MLAS build: Windows #29343, MinGW #29352, static linking #29362, LoongArch64 #29423, s390x #29468, ppc64le #29516, macOS cross-compilation #30140, Windows ARM64 architecture detection #30331
- Fixed opencv_world build with MLAS #29744, #30587 and with a reduced module set #29946
- Fixed external KleidiCV builds with
KLEIDICV_SOURCE_PATH#29264 and installed the KleidiCV license #30124 - Fixed KleidiCV build in the Apple framework by setting the Xcode C++17 standard #29259
- Fixed IPP IW build by always refreshing its CMake files #29813
- Fixed build with HarfBuzz disabled and skipped downloading Unifont in that case #29749, #29876, fixed detection of partial system HarfBuzz builds #29773
- Improved CMake summary: libjpeg-turbo version for bundled and system builds #29219, explicit status when IPP is not found #30113
- Added geometry module header to
opencv2/opencv.hpp#29519 - Relaxed CUDA version check to major.minor in OpenCVConfig #28474
- Fixed build of GpuMatND move operations with CUDA 10.2 #29269
- Fixed LAPACK-enabled build on NetBSD with GCC 14 caused by
<complex.h>macros #29455 - Fixed macOS dynamic framework RPATH for relocatable install #29396
- Fixed C++26 build with the macOS 26 SDK (CGBitmapInfo enum conversion) #29446
- Fixed build with LLVM 23 libc++ caused by a missing
<iterator>include #30399 - Fixed GCC 16 warnings #30308, #29991, Clang -Wextra-semi and -Wfloat-conversion warnings, including in public headers #29750, #29758
- Fixed MSVC narrowing warnings in Carotene HAL on Windows ARM64 #30125
-
Platforms:
-
opencv_contrib:
- dnn_superres: Switched to ONNX models as the TensorFlow importer was removed, deprecated two-file
readModel()#4171, #4166 - wechat_qrcode: Added
WeChatQRCodeconstructor that loads the ONNX models from memory buffers #4239 - wechat_qrcode: Updated Python sample to the two-model ONNX constructor #4219
- rgbd: Restored point colors output in
ColoredKinFu::getCloud()#4184 - face: Fixed Facemark returning all-zero landmarks for
vector<vector<Point2f>>output #4190 - gapi: Fixed Fluid
cmp*(GMat, GScalar)kernels to apply the scalar per channel, matchingcv::comparein 5.x #4262 - optflow: Fixed
DualTVL1OpticalFlowCPU fallback when OpenCL is enabled but no OpenCL runtime is available #4266 - xfeatures2d: Fixed
PCTSignatures::getSampleCount()result #4172 and out-of-bounds read inPCTSignaturesSQFD::computeQuadraticFormDistances()#4173 - line_descriptor: Fixed heap buffer overflow in EdgeDrawing on images with dense edges #4168
- cudastereo: Fixed
StereoSGMconsistency check skipping border pixels when image size is not a multiple of 16 #4165 - cudev: Fixed CUDA build on Windows by defining
ulongforvec_traits.hpp#4144 - viz: Fixed build with MSVC 19.51 #4188
- dnn_superres: Switched to ONNX models as the TensorFlow importer was removed, deprecated two-file
Migration notes
- DNN: the classic engine has been removed #29341. Code passing
ENGINE_CLASSICorENGINE_NEWtoreadNet*()must switch toENGINE_AUTO,ENGINE_OPENCVorENGINE_ORT. - DNN:
readNetFromTensorflow()has been removed #29474. Convert TensorFlow models to ONNX (e.g. with tf2onnx). The dnn_superres module in opencv_contrib now loads ONNX models only #4171. - DNN:
Net::forward()returns FP16/BF16 outputs for models that declare them;Modelclasses still return float #30182. - Core: 32-bit integer add/subtract now saturate #29426; cvRound/cvFloor/cvCeil and saturate_cast saturate out-of-range values on all platforms #30007;
~andbitwise_noton CV_Bool are logical NOT #30611; theMat_ << a, b, ccomma initializer has been removed #29948;transposeNDis deprecated in favor of N-Dcv::transpose#30081. - Calib:
CALIB_DISABLE_SCHUR_COMPLEMENThas a new value #29429; numeric fisheye flags saved by 4.x are rejected with an error #30173. - Python: int64 NumPy arrays whose values do not fit in int32 now become CV_64S instead of being truncated to CV_32S #29594;
Matresults with a zero-length dimension are returned as empty arrays instead of None #29524. - Build:
WITH_UNIFONTis now OFF by default #30109; public geometry headers no longer includelogger.hpp#29416.
Contributors
opencv (174 contributors)
git shortlog --no-merges -ns 5.0.0..5.1.0
72 Abhishek Gola
52 Alexander Smorkalov
45 Vincent Rabaud
31 Shiven Solanki
25 kirtijindal14
24 Prasadayus
20 Teddy-Yangjiale
20 velonica0
19 Savya Sanchi Sharma
19 pranayr710
18 Yang Guanyuhan
17 Prasad Ayush Kumar
16 Arghya Bose
14 Kumataro
14 Madan mohan Manokar
14 Varun Jaiswal
14 uwezkhan
12 Pratham Kumar
12 Uwez Khan
11 vrooomy
10 Agrim Rai
10 Andrei Fedorov
9 Lazizbek Ergashev
9 Om Navin Rope
8 Akansha-977
8 sanjay
7 pbkx
6 Akansha Mallick
6 CheesyWannabe
6 Vadim Pisarevsky
6 Vladimir Iglovikov
6 Zhang Jinhan
5 Kaustubh Arora
4 Arnesh Banerjee
4 SavyaSanchi-Sharma
4 Sergiu Deitsch
4 Thebinary110
4 Tonu Samuel
4 Trishanth Mellimi
4 Tushar Burla
4 sanjayk9
3 CodeCraftsman
3 Gold856
3 NIKHIL
3 Neal Daftary
3 Rishiii57
3 Sean McBride
3 dheeraj singh
3 zhangjinhan
3 胡晨宇
2 Anand Mahesh
2 Jaivardhan Bhola
2 Jonas Perolini
2 Loic Goossens
2 Mulham Fetna
2 Peter Rekdal Khan-Sunde
2 Pierre Chatelier
2 Rishi Kumar
2 Satya Mallick
2 Yang Chao
2 Ziyuan_Li
2 arshsmith
1 A Aswanth Raj
1 Aditya Suryawanshi
1 Ajay Raj
1 Akshar Singhal
1 Alessio Antochi
1 Alessio Roberto Antochi
1 Alessio Timofte
1 Anshu
1 Antonio Rojas
1 Anu Oguntayo
1 Anushka
1 Arman Rostami
1 Ayush Das
1 Bhushan Asati
1 Bo-Cing Wu
1 Brad Smith
1 Devulapalli Naga Sri Vaishnavi
1 DhyeyBuch
1 Ding zhehao
1 Dylan Xu
1 Emil Askerov
1 Eugenio "Jay" Zuccarelli
1 FAN YUCHEN
1 Fedorov, Andrey
1 Hanbin Bae
1 Haris shakeel
1 Ijtihed Kilani
1 Izmajlov, Timur
1 Jakub Kuczys
1 Jeongkeun Kim
1 Jesus Armando Anaya
1 Juha Reunanen
1 Kari Pikkarainen
1 Kenmar Francisco
1 LiuChenjiayi
1 Lukasz Jobczyk
1 Lurie97
1 MAAZIZ Adel Ayoub
1 MUHAMMAD AHMAD MASOOD
1 Maidul Hasan Masum
1 Maitreyee Deshmukh
1 Matt Van Horn
1 Mohd Maaz Khan
1 Muditya Raghav
1 NUAAwqy
1 Neal006
1 Pranav Kaushik
1 Pranshul Soni
1 Prasoon Bodke
1 Primary-H
1 Pruthvi
1 Pulk17
1 Samaresh Kumar Singh
1 Saravana Balaji Mohan Balaji
1 Scott
1 Sewon Ahn
1 Shamik200
1 Shelia J.
1 Shengyu Wu
1 ShivaPriyanShanmuga
1 Sofian Elmotiem
1 Sridhar
1 Srujan rai
1 Stefan Neumüller
1 Stephan T. Lavavej
1 Stern
1 Suman
1 Sun Haiyong
1 Tõnu Samuel
1 Victor Getmanskiy
1 WITHOUTNAMESES
1 WalkingDevFlag
1 Weizhao Ouyang
1 Xingchen
1 Yixuan Tang
1 ZC
1 ZNNAXLRQ
1 Zhewen Tan
1 ahmadmasood43
1 anushkagupta200615-jpg
1 aswanth-07
1 bmad
1 cuishuang
1 gupengzu
1 harjoth
1 hualxie
1 jeevan6996
1 kevin9327
1 kjg0724
1 kvrban
1 lazerg
1 loulanyue
1 omrope79
1 orbisai0security
1 ozhanghe
1 pctablet505
1 rmsalinas
1 sparklejin
1 spicysharkco
1 sridhar-git05
1 utibenkei
1 varun-projects
1 viwe-monai
1 xiaotang
1 xieofxie
1 yehsin
1 yyyisyyy11
1 zaveshaa
1 吴小白
1 熊建祐
1 熊阔豪
1 정상원
opencv_contrib (15 contributors)
git shortlog --no-merges -ns 5.0.0..5.1.0
4 Vincent Rabaud
3 Abhishek Gola
3 Alexander Smorkalov
2 shimat
1 Aaron
1 CSBVision
1 Dmytro Hilei
1 Hugohong258
1 Ken Shirriff
1 Pavel Rojtberg
1 Samaresh Kumar Singh
1 Savya Sanchi Sharma
1 Vadim Pisarevsky
1 vrooomy
1 xiaoyuan1021
version:4.14.0
July, 2026
-
Core module:
- Fixed copyTo on empty fixed-type matrices #28371
- Improved precision of RotatedRect::points #28381
- Fixed UB in cv::error when breakOnError set to true #28446
- Fixed cv::mul overflow for U16 type #28579
- Revert "Disable IPP with AVX512 in cv::compare because of performance regression" #28587
- Fixed UBSan function pointer type mismatch in countNonZero #28581
- Fixed heap-buffer-overflow in YAML parseKey for empty keys #28620
- Optimized flip Horizontal #28614
- Added AVX VNNI support #28684
- Fixed meanStdDev on Windows for ARM #28739
- Added NEON implementation for rotate function #28609
- Fixed inplace transpose race by enforcing LLSS ordering via local barrier in OpenCL #28686
- Fixed incorrect results for in-place flip on strict OpenCL implementations #28813
- Added platform-specific SIMD for cv::reduce REDUCE_SUM #28782
- Implemented safe handling of compressed file level extension (.gz[0-9]) #28923
- Extended AutoBuffer to mimic std::vector #28909 and use it more #28907
- Fixed signed overflow UB in Point/Point3i::dot() #28959
- Added SIMD intrinsics support for norm_mask function #28610
- Add ARMPL support for DFT Function #28664
- Implemented OpenCL kernel for UMat::diag to avoid aliasing races #28897
- Optimized norm with RVV HAL #29057
- Deprecateed MatCommaInitializer_ #29060
- Fixed v_matmul/v_matmuladd scalable semantics and expand lane-group test coverage #29080
- Siwtched to better Durand-Kerner initialization in solvePoly #29109
- Fixed numerical instability and out-of-bounds store in VBLAS SIMD #29141
- Added convertScale data type conversions to RVV HAL #29174
- Fixed inverted continuity check in cvReshapeMatND() #29132
- Fixed memory leak in OpenCL extensions gathering #28981
- Added check to reject nd-matrix dim count above CV_MAX_DIM in FileStorage read #29301
- Moved IPP math functions from core module to HAL #29306
- parallelize sort_ using parallel_for_ #29192
- Fixed potential stack overflow in FileStorage #29348
- Vectorizeed meanStdDev #29339
- FileStorage reads integers above INT_MAX into float/double without truncation #29368
- Optimized minMaxIdx/minMaxLoc #29340
- Added fast-path transposeND for identity and 2D transpose orders #29172
- Migrateed MomentsInTile_SIMD to universal:scalable intrinsics #28881
- Fixed Unicode temp path handling on Windows #28935
- Vectorized cv::reduce #27510
- Enabled ipp calls for sort and sortIdx #29477
- Fixed use-after-scope when Mat::mul() is given a scalar #29447
- Optimized countNonZero #29390
- Enabled AVX-512 dispatch for sum #29400
- SIMD optimizations for norm, distance and Hamming APIs #29335
- Optimized gemm implementation with Universal SIMD #29242
-
Imgproc module:
-
Added findTRUContours - lock-free parallel contour extraction #28773, #29167, #29461
-
Fixed race condition in GaussianBlur #28372
-
BilateralFilter optimization for AVX512 #28401
-
MedianBlur improvement with AVX512 #28394
-
Fixed integer overflow in medianBlur #28386
-
Fixed Laplacian kernel precision for double inputs #28489
-
Fixed minEnclosingCircle O(n^3) worst case by adding Welzl shuffle #28548
-
Added SIMD support for distance transform function #28636
-
Fixed fitEllipseDirect/AMS determinant threshold for near-circular data #28628
-
Optimized tiled parallel box filter with TLS buffers and custom border fill #28830
-
Fixed ROI handling in 2D-tiled parallel execution in FilterEngine #29159
-
Fixed Apple conversions build without AVFoundation #29138
-
Fixed floodFill simple path #29187
-
Speed up first BGR2Lab and BGR2Luv call by building the color LUT faster #29253
-
Fixed missing tipLength validation in arrowedLine #29191
-
Optimized EMD (Earth Mover's Distance) solver performance #29194
-
Improved Parallelism and Memory Access Efficiency for Hough Transform Accumulator #29059
-
Fixed remap nearest rounding #29145
-
Fixed matchTemplate TM_SQDIFF precision loss for CV_8U images #29096
-
Improved color convert and AVX512 dispatch added #28992
-
Optimized LUT and equalizeHist with SIMD #29250
-
Optimized remap interpolation #29507
-
Optimized PyrDown #28650
-
Fixed IPP warpAffine #28562
-
Disabled ipp path for 32FC1 in ipp_hal_warpPerspective
-
Disabled IPP implementation for warpPerspective F32C4 as it triggers exception on Windows #29490
-
Restored IPP integration for Sobel and Schaar #29328
-
Extracted following IPP integrations as HAL: resize #29374, cvtColor #29397, calcHist #29511, distanceTransform #29463, threshold #29491, Canny #29434
-
Filter2D IPP migration to HAL for 4.x #29427
-
Extracted IPP integration as HAL function for box_filter #29420
-
Moved IPP-based Sobel and Scharr to HAL #29417
-
Made RVV HAL resize bit-exact for 8U INTER_LINEAR #29473
-
Added Laplacian hal for riscv-rvv: #28887
-
Added RVV HAL for spatialGradient #29062
-
Re-enabled RVV integral for safe cases #29163
-
hal/riscv-rvv: Fix test failures on hardware that implements tail-agnostic as all 1s #28375
-
-
Imgcodecs module:
- Allow TIFF compression schemes for 32F #28785
- imgcodecs: fix integer overflow in BMP and SunRaster decoders #28379
- imgcodecs(webp): improve IMWRITE_WEBP_LOSSLESS_MODE to support exact lossless compression #28519
- Fix invalid PAM decoding #28753, oss-fuzz 497290557
- Added support for cICP metadata in imreadWithMetadata() #28615
- Fixed JPEG chroma configuration & Standardize component settings #28667
- Fixed UBSan load-invalid-value in SunRasterDecoder::readHeader #29151
- Improved EXIF profile handling #29295, #29322
- Fixed out-of-bounds write when reading 2-channel PAM #29296
-
Flann module:
-
Features2d module:
- Added missing KAZE DIFF_CHARBONNIER support #28324
- Added OpenCL acceleration for BFMatcher cross-check #28735
- OpenCL BFMatcher optimization for crosscheck case #28828
- Added OpenCL support for AKAZE features #28879
- Optimized FAST for RISC-V RVV #28938, #29197
- Improved detectors parameter validation #29201
- Fixed UB left-shift of negative value in BRISK subpixel2D #29240
-
Objdetect module:
- Fix ~0.5px systematic offset in CharucoDetector subpixel refinement #28380
- Optimize duplicated computation in QR code error correction #28460
- Identify ArUco markers based on threshold to reduce false positives #28289
- Rewrite getBitsFromByteList to avoid harmless buffer overflow #28814
- Clear stale outputs in CharucoDetector::detectDiamonds #28818
- Fixed ArUco maxCorrectionBits in predefined dictionaries #29034
- Use validBitIdThreshold for Aruco refineDetectedMarkers #29252
- Fixed speed regression in Aruco identify #29267
- Optimized ArUco to get border errors in one pass for both normal and inverted markers #29329
- Bound alphanumeric values in qr decodeAlpha before map lookup #29378
- Bound marker string length in aruco readDictionary #29539
-
DNN module:
- TopK layer K boundary check allows K == input_dim #28467
- Parallelized Resize layer implementation #28510
- Parallelize Slice layer implementation (4.x) #28511
- Fixed Squeeze to remove all size-1 dims when axes is empty #28425
- Fixed OpenVINO 2026 build failure due to ov::Tensor::data() const change #28592
- Bound einsum subscript index before reading input shape #29418
- DNN/ONNX: Preserve axis attribute in GatherCastSubgraph fusion #28643
- Fixed Resize initNgraph for two-input case #28724
- Fixed BatchNorm bias blob index in validation #28701
- Fixed Flatten axis=rank bug #28816
- Enable 1D int8 AvgPool with OpenVINO with 2025.3 #28961
- Vectorize SigmoidFunctor using universal intrinsics #28999
- Fixed RandomNormalLike #29081
- Added SIMD imp for transcendental activation layers (15 functors) #2937
- Bound tile axis and repeats length in onnx parseTile #29345
- Added RVV LMUL=1 kernel for convBlock_F32 (ConvolutionLayer, rv64gcv) #29405
- Added DynamicQuantizeLinear ONNX layer support #29018
-
Calib3d:
- Optimize calibrateCamera with Schur‑complement LM and parallel Jacobian accumulation #28461
- Fixed potential crash in FMEstimatorCallback::runKernel if solveCubic cannot find solution #28361
- docs(calib3d): clarify coordinate systems in projectPoints, undistort Points, and fisheye::undistortPoints #28333
- Use Delaunay triangulation in computeRNG for findCirclesGrid #29117
-
Video module:
-
VideoIO module:
- Added alpha channel support to VideoWriter and VideoCapture #28751, #28788
- Replaced unnecessary get() usage with integer types #28499, #28505
- Fix timestamp drift and color negotiation on Apple with GStreamer #28535
- Fixed AvFoundation fractional fps seek #28833
- Added CAP_PROP_IMAGE_SEQ_START open-only property for setting the first frame index when a VideoCap is opening with pattern #28844
- Fixed crash in videoInput::start() when pVih is NULL in DSHOW backend #28914
- Fixed heap-buffer-overflow in own MJPEG implementation #29113
- Fixed SIGSEGV crash when releasing VideoWriter on iOS #29359
- Fixed audio sample-rate validation and dropped last frame #27438
-
Highgui module:
-
ML module:
-
G-API:
-
Python bindings:
- Fixed tests with modern numpy #28349, #29122
- Fixed: mark distCoeffs, cameraMatrix as optional in calibrateCamera function #28470
- Fixed inRange type signature to accept Scalar values #28536
- Fixed HoughCircles Python return type to allow None in python #28621
- Fixed segfault on 0-channel numpy array input #28747
- Add context manager compatibility for VideoCapture and VideoWriter #28967
- Fixed python wrapper around ECCParameters to include itersPerLevel #29148
-
Build:
- Fixed build for Power achitecture with SIMD #28345, #28552.
- Fixed IPP management in HAL #28332, #29395, #29462
- Enabled FP16 conversions in Windows on ARM configuration #27897
- 3rdparty(itt): support LOONGARCH64 #28439
- add NEON support for cvFloor in fast_math.hpp on Windows ARM #28243
- Remove bitcode support from Apple framework build scripts #28346
- Clean up stale typing stubs during incremental builds #28665
- Fixed IPPIW binaries search #28589, #28608
- Fixed bundled protobuf headers being overridden by system-installed protobuf #28745
- cmake: find and link libcblas separately for LAPACK/Generic #28780
- js: fix Emscripten version detection and macro usage #28902
- Modernized Doxygen comments to support for v1.15.0 #28903
- Fixed Clp library detection for vcpkg on Windows #28423
- Updateed IPP ICV integration to IPP 2026.0.0 (20260630) #29437
- Updated KleidiCV to verison 26.03 #28744
- Added Ubuntu 26.04 support #28946
- Fixed OpenCV World module build with QT 5 #28958
- Used Xcode DocC tool for buiding Apple platform docs + add quick-start tutorial #28704
- Added support for reproducible builds by making host system version optional #27961
- Relaxed CUDA version check to major.minor in OpenCVConfig #28474
- Fixed macOS dynamic framework RPATH for relocatable install #29396
- Enabled non-exact IPP optimizations if build-time algorithm hint allows it #29431
-
Platforms:
-
Applications:
- Ignore exif orientation and add option for the calibration #28644
Contributors
contributors
git shortlog --no-merges -ns 4.13.0..4.14.0
35 Alexander Smorkalov
19 Vincent Rabaud
18 Madan mohan Manokar
16 Kumataro
10 uwezkhan
7 Teddy-Yangjiale
6 Adrian Kretz
5 Andrei Fedorov
4 Murat Raimbekov
4 Pratham Kumar
4 Samaresh Kumar Singh
4 Uwez Khan
4 pratham-mcw
3 Akansha Mallick
3 Akansha-977
3 Anand Mahesh
3 Anshu
3 Jonas Perolini
3 Maksim Shabunin
3 Matt Van Horn
3 Pierre Chatelier
3 Prasad Ayush Kumar
3 Rafael Muñoz Salinas
3 Souriya Trinh
3 Tonu Samuel
3 ekharkov
3 胡晨宇
2 4ekmah
2 Alex
2 Fedorov, Andrey
2 Hanbin Bae
2 Ismail
2 JoyBoy900908
2 Michael Klatis
2 Mulham Fetna
2 Pavel Guzenfeld
2 SamareshSingh
2 Tiansuanyu
2 WalkingDevFlag
2 Yixuan Tang
2 arshsmith
2 ffccites
2 gideok Kim
2 jiajia Qian
2 kjg0724
2 nmizonov
2 orbisai0security
2 raimbekovm
2 s-trinh
2 熊阔豪
1 ADITYA MISHRA
1 Abhishek
1 Abhishek Gola
1 Ahmad
1 Alex Wu
1 Andrew Owens
1 Andrew Yooeun Chun
1 Anemptyship
1 Anushka
1 Arnesh Banerjee
1 Arnie Chang
1 Arths17
1 Ayush Das
1 CSBVision
1 Chevi koren
1 Connor Tench
1 Denis Barucic
1 Ding zhehao
1 Dmitry Kurtaev
1 Ebrahim Namdari
1 Erellu
1 FAN YUCHEN
1 Fulnergy
1 Giles Payne
1 HAILOM ASEGEDE
1 Igraine
1 Ijtihed Kilani
1 Jake Floch
1 Jeevan Mohan Pawar
1 Jesus Armando Anaya
1 Jules
1 Karnav Shah
1 Kavyansh Tyagi
1 Kevin Lin
1 LHOOL1109
1 Licardo_du
1 LiuChenjiayi
1 Luis Adame Rodríguez
1 Lurie97
1 MAAZIZ Adel Ayoub
1 Mark Harfouche
1 Muhammad Awais
1 Nechama Krashinski
1 Pranav Kaushik
1 Prasadayus
1 Primary-H
1 Rishiii57
1 Rohan Mistry
1 Satge96
1 Sergey Fedorov
1 Shengyu Wu
1 Shengyu-Wu
1 Shrutikasri04
1 Siddharth Panditrao
1 Sikandar
1 Siyu Wang
1 Sofian Elmotiem
1 Srujan rai
1 Stephan T. Lavavej
1 Timur Izmajlov
1 Tõnu Samuel
1 Varun Jaiswal
1 Vigh Sebastian
1 WITHOUTNAMESES
1 Weixie Cui
1 Yang Chao
1 Yuantao Feng
1 ZC
1 ZIHAN DAI
1 ZNNAXLRQ
1 Ziyuan Li
1 anushkagupta200615-jpg
1 donotsleepy
1 example
1 hyndhavamahesh345
1 jinbo
1 kevinylin88
1 kirilllapi
1 manfred
1 ozhanghe
1 rajmahadev422
1 rmsalinas
1 sparklejin
1 steaphenai
1 usernotfound-101
1 velonica0
1 vrooomy
1 yuomy
1 yyyisyyy11
1 정상원
version:5.0
June, 2026
OpenCV 5.0 has been released: https://opencv.org/opencv-5/!
ChangeLog is TBD
Here is the summary and the migration guide
version:4.13.0
December, 2025
New Year update for OpenCV 4.x has been released.
-
CVBenchmark
- An unbiased CPU benchmark by OpenCV (https://github.com/opencv/cvbenchmark) that provides an evaluation of different CPUs in real-world computer vision and AI workloads is released.
-
Core module:
- Modified Input/OutputArray methods to handle 'std::vector' or 'std::vector<std::vector>' in more accurate way #28242
- Made
cuda::GpuMatNDcompatible with InputArray/OutputArray #23913 - Forced output type for empty matrices where it's defined in API #27972
- Added
std::vectorlength check Input/OutputArray #27817 - Added 16-bit LUT and corresponding HAL entrypoint #27890, #27911
- Add
cv::Mat::copyAtfor for ROI operation #27318 - Extended JSON support in cv::FileStorage:
nullparsing #27579 and - Added support parsing null in JSON parser in cv::FileStorage #27579 and back slash "" support #27587
- Fixed
cv::solveCubicnumerical instability via coefficient normalization #28117 - Fixed tempfile race condition on Windows #28087
- Restore parallel framework name on failure attempt #27802
- Dropped OPENCV_FOR_OPENMP_DYNAMIC_DISABLE environment variable in favor of standard OMP_DYNAMIC #28122
- Enabled fp16 conversions, but disabled NEON FP16 arithmetics on Windows for ARM #27897
- Fixed dot product accumulation causing NORM test failures on Windows ARM64 #28211
- Added several performance optimizations for Windows on ARM: #27575, #27596
- Fixed missing vec_cvfo on IBM POWER9 due to unavailable VSX float64 conversion #27990
- Fix in-place flip in HAL for RISC-V RVV #28180
- Added inRange HAL entry point #27854
- Disabled IPP with AVX512 in cv::compare because of performance regression #28311
-
Imgproc module:
- Added Iterative Phase Correlation #28146, paper
- Added
cv::minEnclosingConvexPolygon#27369 - Improved near-zero convexity handling in
cv::convexHull#28043 - Kept
cv::convexHulloutput indices monotone if possible #28163 - Fixed overflow in connected components #27582
- Corrected
cv::minAreaRectto follow documentation (force angle to range [-90, 0)) #28051. Versions of OpenCV with different angle range are 4.5.1-4.12.0. Expected angle range documented first time in 4.12.0 release. - Increased minAreaRect accuracy with doubles #28149
- Added
cv::CLAHE::BitShiftoption #28014 - Fixed
cv::minEnclosingCircle#27904, #27914 - Fixed standard
cv::HoughLinesoutput shift for rho. #27992 - Fixed LINE_4/LINE_8 swap in
cv::drawContours#28088 - Fixed bug in approxPolyDP: calculate distance to a segment, not to a line #28119
- Various performance optimizations for Gaussian Blur, including AVX512 #27795 and blur #27822, bilateralFilter #27433.
- Added CV_SIMD_SCALABLE branch to pointSetBoundingRect #27479
- Added Canny, Scharr and Sobel for riscv-rvv hal #27378
- Optimized
ThickLine()for distant points #27366 - Fixed heap-buffer-overflow in stackBlur #28233 #28250
- Fixed the out-of-bounds read in cv::bilateralFilter for 32f images #28259
- Fixed memory leak in ipp_warp function #27532
- Set limitation to IPP Bilateral Filter tiles number to avoid too small tiles #27720
- Fixed incorrect implementation of multi-threaded call for warp perspective in IPP HAL #27903
- Added stateless HAL for filters and morphology #28208
-
Imgcodecs module:
- Extended metadata support in Jpeg (ICCP and XMP) #27583, PNG and WebP #27503, cICP field in PNG #27741, AVIF (XMP) #27506, #28072.
- Added OpenEXR multispectral read/write support #27485
- Added strict validation for encoding parameters #27621, #27769
- Relaxed decoding size limit to over 1 GiB for several formats #27811, #27976
- Added
IMWRITE_PNG_ZLIBBUFFER_SIZEoption support for PNG #27551, #27615 - Fixed memory leak in WebP backend #27849
- Added workaround for image flipping bug in older GDAL FITS drivers #27919
- Added support for 32bpp BMP with BI_BITFIELDS #27559
- Fixed several overflow and out-of-bound access issues in BMP #28040, #27847
- Fixed potential crashes in PNG found by fuzzer. Namely 429429085, 429645379, 430091585 #27529
- Fixed several potential overflows and error handling mistakes in PNG #28249, #28196, 27750
- Fixed alpha handling for blending in PNG format #27981
- Set
matrixCoefficientstoUNSPECIFIEDfor monochrome images in AVIF #28065 - Added safety checks for AVIF decoder and encoder #28200
-
VideoIO module:
- Added option to open camera device by index through FFmpeg #27841, Added FFmpeg 8.0 support #27691, #27746
- Extended Orbbec SDK support: added timestamps #27610, options for custom fps and resolution #27629, camera distortion coefficients as API #27663
- Extended Aravis SDK support: allowed system-wide installation of SDK #28090, set default pixel format for cameras with unsupported format #28086
- Added macOS support for Orbbec Gemini330 camera #27930
- Fixed frame seeking with negative DTS values in FFMPEG backend #27878
- Fixed CvCapture_FFMPEG::setProperty(CAP_PROP_POS_*) followed by getProperty #27523
- Added Raspberry Pi 4 and 5 V4L2 Stateless HEVC Hardware Acceleration with FFmpeg #27453
- Optimized FFmpeg VideoCapture with swscale threads option #27755
- Fix return code from CvVideoWriter_FFMPEG::writeFrame() when encapsulating ##27737
- Added OPENCV_FFMPEG_SKIP_LOG_CALLBACK to preserve custom FFmpeg logging #27864
- Get code to compile without FFMPEG's libavdevice #27948
- catch _com_error exceptions to suppress debugger flooding #28073
- Fixed picture_sw object leak in ffmpeg backend with hardware codecs. #28283
- videoio(dshow): Fix incorrect mapping for White Balance Temperature (
CAP_PROP_WB_TEMPERATURE) property #28202 - Fixes a crash on iOS when calling
VideoWriter::release()in OpenCV 4.12.0 #28173.
-
Features2D module:
- Fixed ORB inconsistency for masks with values differs from 255 #26366
- Fixed pointer arithmetic in BRISK corner traversal #28091
- Added heuristic to allocate buffer for FAST features depending on input image resolution #27657
- Optimized AGAST for Windows on ARM #27776
- Added FAST to RISC-V RVV HAL #27391
-
Objdetect module:
- Added pixel-based confidence in ArUco marker detection #23190
- Improved multiple QR codes detection with QRCodeDetector::detectAndDecodeMulti #27787
- Fixed to prevent QR code decoding from throwing on degenerate source points #27837
- Fix QRCodeDetector::detectAndDecode crash in case of inconsistent detection #27877
- Remove floating point arithmetic from angle computation in QR codes #28157
- Speedup ChArUco by avoiding temporary copies #27820
- Fixed stack-use-after-scope errors in charuco detector #28285
- Used fast-path with INTER_LINEAR resize when ALGO_HINT_APPROX is used in HOG 27706
-
DNN module:
- Added more layers support: ONNX randomNormalLike #28164, TFLite Minimum #28248, Maximum #28171
- Allowed protobuffer message to be compiled with LITE_RUNTIME #27960
- Fixed ONNX Convolution node parsing when kernel size is implicit #28282
- Fixed Windograd flag handling in convolution layer #28000
- Added NEON intrinsics implementation of fastGEMM1T function #27785
- Add SVE optimized fastGEMM1T function and SVE dispatch #28055
- Fixed heap-buffer-overflow in DNN NaryEltwiseLayer #28272
- Improved performance of softmax_3d with loop unrolling #27777
-
Calib3d module:
-
Stitching module:
-
HighGUI module:
-
G-API module:
- Added G-API custom stream sources in Python #27276
- Implemented
cfgEnsureNamedTensorsoption to OpenVINO Params #27549 - Implemented
cfgClampOutputsoption to OpenVINO Params #27600 - Renamed
WorkloadType::notify()->WorkloadType::set()#28299 - Added support to set workload type dynamically in both OpenVINO and ONNX OVEP #27460
- Fixed null pointer dereference in G-API stateful kernels #28137
- Updated deprecated ov::element::undefined #28127
-
Video module:
- Added multichannel support for findTransformECC and computeECC #27524
- Add optional template mask for findTransformECC #27952
- Added optional Known Foreground Mask for Background Subtractors #27810
- Add setCoarsestScale to DISOpticalFlow #28217
- Fixed potential pointer overflow in Farnback optical flow #28226
-
ML module:
- Fixed
ml::KDTree::findNearest#27915
- Fixed
-
Photo module:
- Added 16U and 32F support in merge functions in photo module #28168
-
JavaScript bindings:
- Added option to wrap opencv_contrib into JS too #27828
- Fixed string property bindings in JS generator #27726
- Update helpers.js to include .delete #27613
- Added deep copy behavior for Mat.clone() #28216
- Removed deprecated DEMANGLE_SUPPORT option
- Tuned CONV_NR_FP32 size for WASM #27773
- Added large scalar kernel for fastconv #27723
- Fixed generation when returned class and function are in a namespace #27963
- Fixed JS bindings for namespaced
Ptrfactory return types #28143
-
Python bindings:
- Tuned Python bindings for logging #27812
- Marked Feature2D.detectAndCompute mask as optional in Python type stubs #27544
- Marked distCoeffs/R/D as optional in calib3d functions #27564
- Added DLPACK support #27581, #27861
- Fixed memory leaks in pybindings #27738
- Add PathLike type hints for args annotated with CV_WRAP_FILE_PATH #27767
- Fixed memory leak in pyopencv_to for path-like objects #28047
- Tunned Python bindings: use export_name as resolved typename for AliasTypeNode #27997
- python: fix pytest-cov false warnings by using compile() with full file path in exec_file_wrapper #28093
- Fixed python scalar typing issues #27620
- Fixed bug in
ifdefstate machine in header parser for bindings #27393 - Wrap GridType field in
cv::findCirclesGridparameters structure #27689
-
Java bindings:
-
Applications and Tools:
- Improved interactive calibration tool: added option to select camera backend #27546, extended calibration flags #27574, Improved preview for grayscale cameras #27628.
- Aligned calibration tools and samples output fields to make them reusable in further steps #27872
- Used calibration board imperfectness correction only for the cases where it's applicable #27571
- Added option to define Aruco index offset in pattern generator #27799
- Moved pattern generator to apps and rewrote tutorial #27833
- Fix charuco_board_pattern in generate_pattern.py #27876
- Updated Tutorial PSNR for identical images #27859
-
Build:
- Integrated KleidiCV version 0.7 with Mac and Linux support (enabled by default) #28220, #27640, #27607.
- Integrated IPP ICV with AWX512 support.
- Fixed issues identified by PVS Studio #28167, #28185, #28198
- Added support MS Visual Studio 2026 support #28013
- Added CUDA 13.0 support #27636, #27668, #27537. Fixed compatibility issues with modern CUDA: #27522, #27734, #27889, #27949
- Fixed OpenBLAS detection #27778, #28052
- Added reproducible builds support by making host system version optional #27979
- Fixed build issue with some old GCC versions #27569
- Fixed unicode tracing symbols with QT #28128
- Fixed eigen diagnostics for versions after v3.4.0 #27536
- Added CMake define option to enforce IPP calls in IPP HAL #27925
Contributors
contributors
git shortlog --no-merges -ns 4.12.0..4.13.0
87 Alexander Smorkalov
31 Kumataro
16 Vincent Rabaud
14 Dmitry Kurtaev
8 MaximSmolskiy
8 satyam yadav
7 Maxim Smolskiy
7 cudawarped
7 pratham-mcw
6 Ghazi-raad
6 Karnav Shah
6 Suleyman TURKMEN
4 Abhishek Gola
4 Pierre Chatelier
4 Yuantao Feng
4 happy-capybara-man
4 raimbekovm
3 Dmytro Dadyka
3 eplankin
3 ramukhsuya
3 utibenkei
2 Adrian Kretz
2 AdwaithBatchu
2 Alessandro de Oliveira Faria (A.K.A.CABELO)
2 Andrei Tamas
2 Anshu
2 ClaudioMartino
2 Madan mohan Manokar
2 Samaresh Kumar Singh
2 Stefania Hergane
2 Vadim Levin
2 harunresit
2 inventshah
2 kallaballa
1 0AnshuAditya0
1 Aakash Preetam
1 Abhishek Shinde
1 Aditya Jha
1 Akash A
1 Akash Arunkumar
1 Alessandro de Oliveira Faria (A.K.A. CABELO)
1 Alex
1 Alexander Alekhin
1 Anastasiya Pronina
1 Ansh Swaroop
1 Arsenii Rzhevskii
1 Atri Bhattacharya
1 Benjamin Buch
1 Brian Ferri
1 D00E
1 Dave Merchant
1 Dheeraj Alamuri
1 Dimitre
87 Alexander Smorkalov
31 Kumataro
16 Vincent Rabaud
14 Dmitry Kurtaev
8 MaximSmolskiy
8 satyam yadav
7 Maxim Smolskiy
7 cudawarped
7 pratham-mcw
6 Ghazi-raad
6 Karnav Shah
6 Suleyman TURKMEN
4 Abhishek Gola
4 Pierre Chatelier
4 Yuantao Feng
4 happy-capybara-man
4 raimbekovm
3 Dmytro Dadyka
3 eplankin
3 ramukhsuya
3 utibenkei
2 Adrian Kretz
2 AdwaithBatchu
2 Alessandro de Oliveira Faria (A.K.A.CABELO)
2 Andrei Tamas
2 Anshu
2 ClaudioMartino
2 Madan mohan Manokar
2 Samaresh Kumar Singh
2 Stefania Hergane
2 Vadim Levin
2 harunresit
2 inventshah
2 kallaballa
1 0AnshuAditya0
1 Aakash Preetam
1 Abhishek Shinde
1 Aditya Jha
1 Akash A
1 Akash Arunkumar
1 Alessandro de Oliveira Faria (A.K.A. CABELO)
1 Alex
1 Alexander Alekhin
1 Anastasiya Pronina
1 Ansh Swaroop
1 Arsenii Rzhevskii
1 Atri Bhattacharya
1 Benjamin Buch
1 Brian Ferri
1 D00E
1 Dave Merchant
1 Dheeraj Alamuri
1 Dimitre
87 Alexander Smorkalov
31 Kumataro
16 Vincent Rabaud
15 Maxim Smolskiy
14 Dmitry Kurtaev
8 satyam yadav
7 cudawarped
7 pratham-mcw
6 Ghazi-raad
6 Karnav Shah
6 Suleyman TURKMEN
4 Abhishek Gola
4 Pierre Chatelier
4 Yuantao Feng
4 happy-capybara-man
4 raimbekovm
3 Dmytro Dadyka
3 eplankin
3 ramukhsuya
3 utibenkei
2 Adrian Kretz
2 AdwaithBatchu
2 Alessandro de Oliveira Faria (A.K.A.CABELO)
2 Andrei Tamas
2 Anshu
2 ClaudioMartino
2 Madan mohan Manokar
2 Samaresh Kumar Singh
2 Stefania Hergane
2 Vadim Levin
2 harunresit
2 inventshah
2 kallaballa
1 0AnshuAditya0
1 Aakash Preetam
1 Abhishek Shinde
1 Aditya Jha
1 Akash A
1 Akash Arunkumar
1 Alessandro de Oliveira Faria (A.K.A. CABELO)
1 Alex
1 Alexander Alekhin
1 Anastasiya Pronina
1 Ansh Swaroop
1 Arsenii Rzhevskii
1 Atri Bhattacharya
1 Benjamin Buch
1 Brian Ferri
1 D00E
1 Dave Merchant
1 Dheeraj Alamuri
1 Dimitre
1 Fanchen Kong
1 Galina Bykova
1 Gursimar Singh
1 HARSH SUMAN
1 Haodi Yao
1 Haosonn
1 Ismail Abou Zeid
1 Jahnvi
1 Jay Pol
1 JayPol999
1 Jeremy Kruid
1 Jie Pan
1 Johnny
1 Jonas Perolini
1 Josua Rieder
1 Kai Pastor
1 Kavyansh Tyagi
1 Maksim Shabunin
1 Marius Wachtler
1 Muhammed Jaseem Pallikkal
1 Nadezhda Mizonova
1 Ola Olsson
1 Parth Parekh
1 Peter Rekdal Khan-Sunde
1 Quaylyn Rimer
1 Rita Melo
1 Sachin Shah
1 Sam Carlberg
1 SaraKuhnert
1 Shruti Arsode
1 Skreg
1 Stefan Dragnev
1 Timi
1 Uilian Ries
1 Vadim Pisarevsky
1 Victor Getmanskiy
1 Vladyslav Humennyy
1 Yan Wen
1 abhijeetraj10-web
1 ashish-sriram
1 damon-spacemit
1 ekharkov
1 fcmiron
1 hyarasi13
1 jmackay2
1 lebarsfa
1 nina16448
1 nishith-fujitsu
1 omaraziz255
1 penghuiho
1 rowdha fakier
1 s-trinh
1 shubham khatri
1 sinkboy-chen
1 sirudoi
1 underdevelopedprefrontalcortex
1 victorget
1 xaos-cz
1 xcm4
1 xybuild
1 zdenyhraz
version:4.12.0
July, 2025
Summer update for OpenCV 4.x
-
Core Module:
- Added user-defined logger callback #27154
- Added
reinterpret()method tocv::Mat#25394 - Fixed empty ND-array construction #27362
- Fixed bug with
int64support for FileStorage #26846 - Fixed
cv::meanStdDevoverflow for large images #26867 - Useed HAL for cv::mean function too #26895
- Vectorized cv::normalize / cv::norm #26885
- Enabled SIMD_SCALABLE for exp and sqrt #26886
- vectorized normDiff with universal intrinsics #27042
- Refactored normDiff in hal_rvv and extended with support of more data types #27115
- Further vectorized copyTo with mask #27145
- Fix POWN OpenCL implementation #27274
- Restored legacy universal intrinsics operators in a separate header #27327
- Improved solveCubuc accuracy: #27331, #27347
- Deprecated copyData Parameter in
cv::UMatconstruction fromstd::vectorand always copy data #27408
-
Imgproc Module:
- Optimized and reduced memory consumption in
cv::findContours#26690, #26834 - Fixed integer overflow in
cv::HoughLinesProbabilisticwith very large input images #26744 - Fixed several potential overflows in image warping #26765, #26776
- Improved robustness for ellipse fitting #26773
- Added
cv::THRESH_DRYRUNflag to get adaptive threshold values without input thresholding #26836 - Fixed
cv::getPerspectiveTransformfor singular case #26926 - Optimized bayer2Gray with universal intrinsics #26868
- Added optional mask to
cv::threshold#26842 - Accelerated
cv::remapcalculation with multi-threading, whencv::WARP_INVERSE_MAPis used #27108 - Reworked HSV color conversion tables initialization in OpenCL branch to fix possible data raise #27287
- Fixed bilateral filter's sigma color and sigma space issue #27309
- Impoved performance of medianblur #27299
- Added
cv::getClosestEllipsePointsfunction to get the closest point on an ellipse #26299 - Corrected IPP implementation for
cv::distanceTransformresults with single thread #27432 - Fixed
cv::matchTemplatewith mask crash #26703 - Added diamond structuring element to morphology operations #27441, #27492
- Improved
cv::intersectConvexConvexaccuracy in corner cases #26974
- Optimized and reduced memory consumption in
-
Calib3d module:
- Fixed inliers updating in homography estimation #26742
- Added
cv::solvePnPRansacimplementation for the fisheye camera model #26669 - Fixed different marker ordering with
cv::findChessboardCornersSBWithMetaandcv::CALIB_CB_LARGERflag. - Fixed logical mistake in FilterSpecklesImpl #26996
- Optimized undistort points for the fisheye camera model #26988
- Optimized new camera matrix estimation and some related functions #27001
- Added warning if projected axes are out of camera frame in
cv::drawAxesfunction #27311 - Added image dimension check to avoid StereoSGBM non-determinism #27305
- Fixed bugs in SQPNP orthogonalization and simplified column vectors copying #27437
-
DNN Module:
- Added TFLite StridedSllice (without strides but just Slice) and enable strides for TF importers #27273
- Added fusion handler of conv+eltwise in case of multi-output node (i.e. Split) #27326
- Added new ops import in TFLite parser: SUB, SQRT, DIV, NEG, SQUARED_DIFFERENCE, SUM #27307
- Fxied scalars and 1d tensors support in TFLite parser #27307
- Reduced number of NHWC<->NCHW conversions in TFLite parser #27307
- Added checks before getting latest pin in
Net::Impl::getLatestLayerPin#27353 - Added OpenVINO NPU support #27363
- Added more operations to CANN backend #24756
-
Objdetect module:
- Extend ArUcoDetector to run multiple dictionaries in an efficient manner #26934.
- Fixed rotated aruco marker board generation #26753
- Fixed incorrect Aruco marker detection near image edge #26968
- Fixed invalid vector access in QR de/encoder #26532
- Fix QR code encoder with auto version #27244
- Aded QRCode ECI encoding support #24426, #27486
- Made ChAruco board consistency check optional #26824
-
Photo Module:
-
VideoIO Module:
- Fixed invalid custom FFmpeg options handling provided with environment variable #26793
- Fixed default
cv::CAP_PROP_ORIENTATION_ATUObehaviour #26800 - Improved camera opening performance when with DShow backed, if custom options are provided #26601
- Added zoom support into Android native camera capture #26837
- Fixed V4L frame size for non-BGR output #27193
- Added Orbbec Gemini 330 camera support #27230
- Fixed
cv::VideoWriterfailure on writing colorless images #27153 - Fixed Android setCameraIndex issue #27419
-
Imgcodecs:
- Extended image I/O API with metadata support #27499
- Added in-memory animation encoding and decoding #27013
- Added hidden frame support for Animated PNG #27127
- Added GIF decode and encode for imgcodecs #25691, #26971, #26859, #26738, #26930, #27081, #27138, #27296
- Added animated WebP Support #25608, #27457
- Added GDAL multi-channel support #27458
- Fixed AVIF linkage on Windows #26762
- Significantly improved PNG and Animated PNG files handing #26849, #26739, #26748, #26782, #26832, #26835, #26848, #26851, #26854, #26915, #27040, #27087, #27297
- Added several fixes for libspng integration #27314
- Fixed memory leak in JpegXL decoder #26787
- Added support for
cv::IMREAD_UNCHANGEDand other ImreadFlags into JpegXL implementation #26788 - Implemented
imdecode()for JpegXL to directly read from memory #26844 - Added lossless compression support for JpegXL #27384
- Fixed cv::imread() implementation for 16-bit png with libspng back-end #27113
-
Highgui Module:
-
G-API module:
-
Video Module:
- Added trackers factory with pre-loaded dnn models #26875
-
HAL:
- Extracted HAL implementations as dedicated folder #27252.
- Implemented new HAL for RISC-V RVV 1.0 platforms. See details in blogpost. See all changes by query
- Refactored OpenVX implementation as HAL #26903, #26911, #26907.
- Partially refactored Intel IPP integration as HAL #26880, #27125, #27128, #27194, #27213, #27346. Further IPP conversion will be continued in the next releases
- Fixed HALs dependency from thre
cvnamespace #26878 - Updated KleidiCV HAL for ARM to version 0.5
- Extended FastCV HAL for Qualcomm platforms #27217, #27216, #27184, #27182, #27033
- Added new HAL entries for cv::sum #27346, copyTo with mask #27162, cv::DFT and cv::DCT variations #26865, convert with scale #26804, cv::norm variations #26804, minMaxIdx with step support #26789, cv::calcHist #27332, cv::pyrUp #26958, more variations for cv::remap #27119
-
Python, Java and JavaScript bindings:
- Added conditional inclusion support to header parser #27325, #27393, #27478
- Updated predefined_types.py #26826
- Added bindings for animations #26813
- Fix wrong python type hints for
cv::imread#26890 - Replaced
tostring()andfromstring()call in tests and samples for compatibility with modern Python #26932, #26949 - Replaced ndarray.ptp() with np.ptp() for NumPy 2.0 Compatibility #27133
- Extended Java bindings generation in DNN #27228, #27260, Features2d #27245
- Fixed
std::vector<Point3f>handling in JS wrappers #27291 - Added
cv::VideoCapturebuffered stream constructor into Java #27284, #27421 - Extended bindings for
cv::HoughLinesWithAccumulator#27377 - Fixed Kotlin 2.0 internal error for unsafe coercions #26354
-
Platforms support:
- Fixed OpenBLAS detection on Linux #27029
- Fixed compatibility with CMake 4 #27192
- Fixed Android build with Vulkan support #26765
- Fixed VSX intrinsics (Power) implementation #26750, #26786
- Added CMake checks for getauxval and elf_aux_info for POWER architecture #26798
- Fixed build for openBSD #26803
- Added initial support for Nvidia Blackwell GPU arch in CUDA #26820
- Fixed cv namespace dependency in Carotene HAL #26878
- Fixed _DEBUG/NDEBUG handling across modules #26151
- Fixed build for QNX 7.0 #26985
- Switched to statically linked FastCV #26917, #27340 fixed build issues on Android #27345
- Forced C++17 Standard for CUDA targets when CUDA Toolkit >=12.8 #27112 #27142
- Fixed build for Windows ARM64EC #27416
- Fixed filesystem support under Cygwin environment #27484
Contributors
contributors
git shortlog --no-merges -ns 4.11.0..4.12.0
58 Alexander Smorkalov
20 Kumataro
19 Yuantao Feng
17 Suleyman TURKMEN
16 Vincent Rabaud
14 Benjamin Knecht
14 shyama7004
12 Maksim Shabunin
12 天音あめ
10 Dmitry Kurtaev
10 GenshinImpactStarts
10 Maxim Smolskiy
10 MaximSmolskiy
10 Skreg
10 amane-ame
4 Alexander Alekhin
4 Liutong HAN
4 Pierre Chatelier
4 Souriya Trinh
4 fengyuentau
3 Kavyansh Tyagi
3 Letu Ren
3 Xue Zhang
3 adsha-quic
3 cudawarped
3 eplankin
3 utibenkei
2 Aakash Preetam
2 Abhishek Gola
2 Aditi Sharma
2 Brad Smith
2 Daniel
2 Martin Valgur
2 Myron Rodrigues
2 Rüdiger Ihle
2 leopardracer
2 quic-xuezha
2 ruisv
2 s-trinh
2 xaos-cz
1 Aditya Jha
1 Adrian Kretz
1 Alfred Wingate
1 Ali Saleem
1 Anastasiya Pronina
1 Anshuprem
1 Connor Baker
1 Dan Dennedy
1 Daniel Bermuth
1 Daniil Anufriev
1 Diego1V
1 FleeOvernight
1 Francisco Mónica
1 Frank Liu
1 FurkanTahaSaranda
1 Gianluca Nordio
1 Gou Minghao
1 Gursimar Singh
1 Horror Proton
1 Ivan Avdeev
1 JavaTypedScript
1 Johnny
1 Junrou Nishida
1 Kababey
1 Ken Shirriff
1 Liane Lin
1 Madan mohan Manokar
1 Maksym Ivashechkin
1 Malacath-92
1 Manolis Lourakis
1 Mark Harfouche
1 Martin
1 Maxim Evtush
1 Neko Asakura
1 Onuralp SEZER
1 RoshniUG
1 Ryan Wong
1 Scorpion1234567
1 Sergei Nikiforov
1 Snehasish Basu
1 Super
1 UnnamedOrange
1 Vadim Levin
1 Vadim Pisarevsky
1 Vidip Singh
1 Yannis Guyon
1 YooLc
1 chengolivia
1 dai-xin
1 fuder.eth
1 gaohaoyuan
1 iiiuhuy
1 kilavvy
1 krikera
1 kyler1cartesis
1 lawrencec98
1 lve-gh
1 nina16448
1 omahs
1 phanirithvij
1 sight
1 sirudoi
1 sssanjee-quic
1 sujal
1 tho
1 xi-guo
1 Øystein Walle
version:4.11.0
January, 2025
New Year update for OpenCV 4.x has been released.
-
Generic:
-
Core Module:
- Added int64 data type support for FileStorage #26434
- Fixed invalid attribute value handling in FileStorage #25955.
- Extended LUT for FP16 support #25787.
- Fixed stdDev tail filling with zeros with HAL in meanStdDev #25789.
- Set and check allocator pointer for all cv::Mat instances #25979
- Improved accuracy of Rect::contains #26022
- Fixed result offset in minMaxIdx with HAL in some cases #26080
- Replaced C++ operators with wrapper functions on universal intrinsics backends #26109
- Extended cv::TickMeter #26212
- Rewrote OpenCL-OpenGL-interop device discovery routine without extensions and with Apple support #26281
- Marked cv::Mat(Mat&&) as noexcept #25899
- Multiple Eigen library interop improvements #25751.
-
Calib3d module:
- Multiple chessboard detector improvements #25427, #25807, #25991, #26014
- Enabled checkerboard detection with a central / corner marker on a black tile #25808
- Fixed Rodrigues CV_32F and CV_64F type mismatch in projectPoints #25824
- Added fisheye::distort with non-identity projection matrix #25943
- SQPnP solver updates #26219
- Fixed vector access in USAC #26530
-
Imgproc Module:
- Added a new function that approximates the polygon bounding a convex hull with a certain number of sides #25607
- Added Weighted Hough Transform #21407
- Fixed bug in contours approximation #25672
- Fixed bug in divSpectrums #25738
- Fixed result buffer overflow in intersectConvexConvex_ for non-convex input #25725.
- Added flag to GaussianBlur for faster but not bit-exact implementation #25792
- Added flag to cvtColor for faster but not bit-exact implementation #25932
- Fixed fillPoly drawing over boundaries #26187
-
DNN Module:
- [GSoC] Blockwise quantization support #25644
- Faster implementation of blobFromImages for cpu nchw output #26127
- DNN optimization with RISC-V RVV #25883.
- Added DepthToSpace and SpaceToDepth #25779
- Yolo v10 support and related samples #25794
- Parallel implementation of nary elementwise operations #25630
- Support for Unflatten operation required by Attention layer #25861
- Erf and GELU layers optimization #25147
- Activations optimization with v_exp #25881
- Fixed compilation errors with different OpenVINO versions #25987
- Fixed matmul crash with CuDNN #26029
- Fixed CuDNN runtime version check for CuDNN 9+ #25841.
- Added ONNX TopK #23279
- Fixed buffer allocation in einsum (fixed random crash on 32-bit platforms) #26059
- Added Leaky RELU support for TFLite #26132.
- Switched to run-time dispatcher for Winograd #26155
-
Objdetect module:
-
Highgui module:
-
Imgcodecs module:
- [GSoC] New API for Animations with WEBP, AVIF and Animated PNG support #25608, #25715.
- [GSoC] Add GIF decode and encode for imgcodecs #25691
- Added experimental JPEG XL (jxl) codec support #26379
- Initial RGB layout support in imread and imdecode #25809
- Fixed imread output type for some cases #25703
- Fixed file descriptor leak in HDR decoder #25838
- Fixed corrupted JPEG decoding #25864
- Improved error handling in image codecs #25975
- Fixed Bayer2Gray SIMD for U8 #25968
- Avoid uninitialized value read in AVIF #26084
- Implemented imencodemulti() #26211
- Fixed compatibility with different OpenEXR versions #26478.
-
VideoIO module:
- Added VideoCapture constructor for in-memory data stream #25584
- Fixed bugs in native video encoding on Android #25716.
- Added BGRA streams support in GStreamer back-end #25602.
- Updated materials for Orbbec cameras support #25813, #25845, 25907
- Fixed cv::VideoWriter with FFmpeg timestamps encapsulation #25874
- Fixed memory leak in Dshow back-end #26045
- Fixed V4L NV12 color conversion #26081
- Android native camera feature enhancements #26627
- AndroidMediaNdkCapture pixel format enhancement #26656
- Fixed VideoCapture fails to read single image with digits in name #26637
- Fixed writer setProperty with FFmpeg plugin #26652
-
Video module:
- Fixed VitTrack in the case where crop size grows until out-of-memory when the input is black #25771
-
Features2d:
- Fixed out of bounds access in SIFT #26148
-
G-API module:
-
Optimizations:
- New FastCV-based HAL for Qualcomm SoCs (
-DWITH_FASTCV=ONCMake option) #26556, #26617, 26619, 26621. - Added own vectorized version of v_exp #24941, v_log #25781, v_erf #25872, v_sin and v_cos #25892.
- KleidiCV HAL for ARM updated to KleidiCV 0.3 #26623 and it is turned on by default for Android builds. The supported operations and parameters are documentedhere.
- Initial version of HAL for RISC-V RVV 1.0 and RISC-V RVV 0.7.1 extensions #26216, #26624, 26675.
- Used LMUL=2 in the RISC-V Vector (RVV) backend of Universal Intrinsic. #26318
- More functions in NDSRVP HAL for RISC-V P extension #25786, #26088, #26364.
- Updated built-in IPP to version 2021.12. Fixed build issues with old and new Intel IPP layouts #25773
- New FastCV-based HAL for Qualcomm SoCs (
-
Platforms:
- HWAsan support on Android #25746
- Several CUDA fixes for old GPUs without FP16 support #25880
- Added getStdAllocator() to cv::cuda::GpuMat #25978
- Updated NPP calls to use the new NppStreamContext API if available #26245
- More convenient GpuMatND constructor #26472
- Added run-time GPU check to haveCUDA #26164.
- Add support for QNX #25832
-
OpenCV.js
- Extended API white-list and added more tests #26387
- Split white-list per module. Added opportunity to cover opencv_contrib modules #25986
- Fix incorrect string format in js build script #26374
- Emscripten build fixes with SIMD intrinsics #26537
- Added more public types for USAC support #26638
- Rename Mat::clone binding because it is used in Emscripten #26643
- Fixed C preprocessor stringification #26644
- Fix enum generation issues #26147
- Multiple test improvements #25732, #25757, #25961
Contributors
contributors
git shortlog --no-merges -ns 4.10.0..4.11.0
57 Alexander Smorkalov
34 Maksim Shabunin
25 Vincent Rabaud
16 Rostislav Vasilikhin
15 Suleyman TURKMEN
13 Kumataro
12 Letu Ren
10 Yuantao Feng
9 Maxim Smolskiy
8 Dmitry Kurtaev
8 Alexander Lyulkov
7 Liutong HAN
7 kallaballa
5 Alexander Alekhin
5 Wanli
4 FantasqueX
4 cudawarped
3 Abduragim Shtanchaev
3 Rüdiger Ihle
2 Amir Hassan
2 Hao Chen
2 Junyan721113
2 KangJialiang
2 Manolis Lourakis
2 Maxim Milashchenko
2 Pierre Chatelier
2 chacha21
2 eplankin
2 ericmariasis
2 richard28039
2 zihaomu
1 Alberto Zurini
1 Alessandro de Oliveira Faria (A.K.A.CABELO)
1 Alexander Panov
1 Aliaksei Urbanski
1 Andy-SAKN
1 Arvind Iyer
1 Aven
1 Billy Robert O'Neal III
1 CSBVision
1 Christine Poerschke
1 Corentin Noël
1 Dan Mašek
1 Daniele Affinita
1 Dietmar Schabus
1 Dmitry Yurov
1 HAN Liutong
1 Hardik Kamboj
1 Ivan Afanasyev
1 James Choi
1 Javier Macias Sola
1 Karsten Wiese
1 Kimberly N. McGuire
1 Masahiro Ogawa
1 Miguel Daipré
1 Mikhail Khachayants
1 Mironov Arseny
1 MurtazaSaherwala
1 Neko Asakura
1 Nishanth
1 Octopus136
1 Onur Can KARAMAN
1 Oちゃん
1 Patrick Keane
1 Philip Lamb
1 Richard Barnes
1 Robert Lexmann
1 Robert Mitchell
1 Scott
1 Septimiu Neaga
1 ShengYu
1 Simon Kämpe
1 Skreg
1 Sourav Kumar
1 Super
1 TFiFiE
1 Thirumalai Nagalingam
1 Ujjayant Kadian
1 Vadim Levin
1 WU Jia
1 WangWeiLin-MV
1 Yang Chao
1 Yannis Guyon
1 Yoshiki Obinata
1 Zach Lowry
1 _Ayaka
1 adsha-quic
1 alex-urm
1 anandkaranubc
1 cDc
1 catree
1 fengyuentau
1 gblikas
1 george
1 inayd
1 j3knk
1 kaingwade
1 kozinove
1 lamiayous
1 llh721113
1 pasbi
1 penghuiho
1 quantizs
1 quic-apreetam
1 quic-xuezha
1 shengyu
1 shyama7004
1 stepkamipt
1 tingboliao
1 xkszltl
1 xndcn
1 武士风度的牛
version:5.0-alpha
December, 2024
The alpha release for the new OpenCV generation. The release is designed as technology preview and not ready for production usage yet.
The following notation is used to mark various items below:
- 5+4.x: the feature is not quite new, it's already put into the latest 4.x, but it's important enough to mention it here as well.
- 5.0: the item will be finished in 5.0 release; currently it's planned or in progress.
- 5.x: the item will be put in some form into 5.0 release, but will mostly be finished in subsequent 5.x releases.
Release highlights
General changes, improvements
- 5+4.x: Recent OpenCV 4.x (since OpenCV 4.5.0) and also OpenCV 5.0 are now distributed under Apache 2 license. We used BSD license before, but switched to Apache 2, because the latter is more refined and provides somewhat better protection (not ideal though) from patent-related issues.
- OpenCV now requires C++ 17 as a minimum C++ standard. It is built by default with C++ 17, but we also plan to make it compatible with C++ 20 and C++ 23.
- Python 2 support is removed. OpenCV now requires Python 3 (3.6+) and we only build Python 3 bindings.
Big OpenCV cleanup
- C API has been removed. We still use some
CV_macros, such asCV_8U, but all C functions (likecvCreateMat()orcvFindContours()) and structures (such asCvMat) have been removed. Goodbye, good old OpenCV 1.x API, RIP :) - OpenVX support has been removed. If some vendors provide OpenVX kernels and want to use them for OpenCV acceleration, they can create a custom “non-CPU” HAL for that, see below.
Graph API(G-API) module has been moved toopencv_contrib.- Classic
MLmodule has been moved toopencv_contrib. If you use Python, scikit-learn is a much better alternative. Features2Dmodule has been renamed toFeatures. Scope of the renamed module has been extended to process feature vectors produced by the modern deep nets. Several obsolete feature detectors/descriptors have been moved to opencv_contrib.SIFT,ORB,FAST,GoodFeaturesToTrack,MSERare still available, though.- 5.0:
FLANNas a separate module will be gone. Annoy-based ANN (approximate nearest neighbor) search algorithm, which has been already added toFeaturesmodule, will replace it. - Cleaned
objdetectmodule: Haar-based and HOG-based detectors have been moved toopencv_contrib,xobjdetectmodule. There are modern deep learning-based object/face detectors that are both faster and more accurate. Calib3dmodule has been split into 3 modules:3d— basic 3D geometry and 3D vision functionalitycalib— camera calibrationstereo— algorithms for depth map estimation via stereo correspondence.
- Many obsolete samples (~50% of C++ samples and 5% of Python samples) have been removed. Many of the remaining samples have been revised.
Updated Core module
- OpenCV now supports the extended set of data types:
uint8_t: CV_8U,int8_t: CV_8S,uint16_t: CV_16U,int16_t: CV_16S,int32_t: CV_32S,float: CV_32F,double: CV_64F,hfloat(a.k.a.halforfloat16_tor__fp16):CV_16F.- (new in OpenCV 5):
bfloat(a.k.a.bfloat16_t):CV_16BF,uint32_t: CV_32U,uint64_t: CV_64U,int64_t: CV_64S,bool: CV_Bool. booltype takes 1 byte per value, not 1 bit. Any non-zero byte is consideredtrue, zero byte meansfalse.cv::Matof typebool (CV_Bool)can now be used as a mask for all functions where we usedcv::Matofuchar/uint8_torschar/int8_tbefore.- Operations on
hfloatandbfloatare always available, even on hardware that does not support those types natively. If necessary, internally we use efficient inline functions for scalar and vectorfloat<=>hfloat/bfloatconversion. Support for the new types has been added tocv::Mat,cv::UMat,InputArray/OutputArray, key modules (core, dnn, (5.x) imgproc etc.),FileStorage, various programming language bindings etc.
- OpenCV now supports arrays of lower than 2 dimensionality, i.e. 1D (vectors) and 0D (scalars).
std::vector<T>wrapped intoMatorInputArray/OutputArrayis now a real 1D array, not 2D Nx1 or 1xN array (as in OpenCV 4.x). For 1D arraysMat::dims == Mat::rows == 1,Mat::cols == Mat::total() == <number_of_elements>. For 0D arraysMat::dims == 0,Mat::rows == Mat::cols == Mat::total() == 1. The safe method to distinguish between an empty matrix and a scalar is to use<some_mat>.empty(), which is basically equivalent to (but is slightly faster than)<some_mat>.total() == 0. - Lapack is now always available within OpenCV. In particular, it’s used for more efficient SVD and eigenvalue/eigenvector decomposition and the USAC framework. When there is no external Lapack library installed in the system, OpenCV builds and uses the internal small subset of Lapack.
- 5.0, 5.x: Further refactoring and improvements are expected before and after 5.0 release: https://github.com/opencv/opencv/issues/25011.
Updated Imgproc module
- Accelerated image warping functions: warpAffine, warpPerspective, remap. Acceleration factor varies from 10% to more than 300%, depending on the platform, image size, type and operation flags. More optimizations for those functions, as well as other important image processing functions are expected in 5.0 gold.
- Text rendering now uses STB-based truetype engine and the embedded variable truetype font. Users can also load and use custom fonts. Consequently, many Unicode symbols are now supported, with a few caveats though:
- some scripts, such as Arabic or Devanagari, are not rendered properly, we need to add Harfbuzz for that
- some compound Unicode symbols are not rendered properly for the same reason
- color emoji are not supported, as STB is a simple black-n-white engine.
- 5.0, 5.x: Further refactoring and improvements are expected before and after 5.0 release: https://github.com/opencv/opencv/issues/25012
Updated HAL
- 5+4.x: Many new entries have been added to OpenCV HAL, allowing various vendors to provide custom acceleration to OpenCV functions. In 5.0 gold some more new HAL entries will be added.
- 5+4.x: In some cases vendors provide super-fast implementations that are unfortunately not 100% compatible with OpenCV. To let user to choose between speed and accuracy in some critical places, OpenCV introduced the optional
AlgorithmHint hintparameter to several functions, which is set toALGO_HINT_DEFAULTby default (which is equivalent toALGO_HINT_ACCURATEunless user compiled OpenCV withALGO_HINT_DEFAULT=ALGO_HINT_FAST(-DOPENCV_ALGO_HINT_DEFAULT=ALGO_HINT_APPROXoption in cmake). - 5+4.x: Universal intrinsics for math functions (
v_exp,v_log,v_erf,v_sincos) have been added to accelerate deep learning inference, image processing and other algorithms. - FP16 (i.e. half-precision) universal intrinsics have been added into ARMv8 NEON and RISC-V RVV backends. In both cases FP16 SIMD arithmetics is not available by default, the code needs to be built with special options. The corresponding parts of OpenCV use our runtime dispatching mechanism, which chooses the best-suited flavors of kernels depending on the actual client hardware.
- 5.0, 5.x: UMat will be extended to be able to store any CPU or non-CPU array/tensor. That is, from an OpenCL-only solution (T-API) we now migrate to a universal heterogeneous API (we might call it U-API or “non-CPU HAL”) and UMat will be the main data container for it. Many other improvements are expected as well: https://github.com/opencv/opencv/issues/25019, https://github.com/opencv/opencv/issues/25025
Updated DNN (Deep Learning Inference Module)
- The new engine has been introduced that now co-exists with the old engine. The new engine provides better support for dynamic shapes and other modern ONNX features. By 5.0 gold it will also provide much better coverage of ONNX specification than the old engine; now the coverage is comparable.
- Added parameter
int engine = ENGINE_AUTOtocv::dnn::readNet()to control which engine is used to load and further run the model. By default, we try the new engine first and if it fails to load the model, fall back to the old engine. We can also force the new engine or the old engine. Because of the different internal representation the engine cannot be switched after the model is loaded. - Parsers for ONNX, Caffe, TF and TFLite formats have been updated to support the engine selection.
- 5.0, 5.x: currently, the new engine only supports the default backend and CPU target. It’s planned to enable more backends and targets by 5.0 gold and even more backends in subsequent 5.x releases #26198.
Updated 3D/Calib
- 5+4.x: Significantly more efficient USAC framework (especially in the case of noisy datasets) is now used for RANSAC-based algorithms to estimate homography, essential matrix, solve PnP problem etc. See https://docs.opencv.org/5.x/de/d3e/tutorial_usac.html
- New Levenberg–Marquardt algorithm implementation. It's faster and more accurate.
- Efficient multi-camera calibration framework has been added to calib module. It includes smart initialization and USAC-based optimization pipeline to compute relative positions of all simultaneously calibrated cameras w.r.t. the 1st camera. Various camera configurations are supported (all pinhole cameras, all fisheye cameras and the mixed case). See tutorial for more details.
- Initiated work on basic mesh processing and point cloud processing algorithms: TSDF, ICP, etc.
- Added importers and exporters for some popular point cloud formats, such as .ply and .obj.
Revised Samples
- Revised the following deep learning samples: classification, segmentation, object detection, edge detection, tracking, person reid. All the samples use a collection of models that can be conveniently downloaded with
cd <opencv>/samples/dnn && python3 download_models.py. - Added experimental samples for LLM (GPT2) and diffusion (LDM) models.
Migration for 4.x
TBD
- Home
- Deep Learning in OpenCV
- Running OpenCV on Various Platforms
- OpenCV 5
- OpenCV 4
- OpenCV 3
- Development process
- OpenCV GSoC
- Archive
© Copyright 2019-2025, OpenCV team