-
-
Notifications
You must be signed in to change notification settings - Fork 56.5k
OpenCV Change Logs
Previous Change Logs:
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
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
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
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
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
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 武士风度的牛
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.
- 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.
- 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 functionality -
calib— camera calibration -
stereo— 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.
- 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.
- 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
- 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
- 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.
- 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 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.
TBD
© Copyright 2019-2025, OpenCV team
- Home
- Deep Learning in OpenCV
- Running OpenCV on Various Platforms
- OpenCV 5
- OpenCV 4
- OpenCV 3
- Development process
- OpenCV GSoC
- Archive