1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-29 07:13:02 +04:00
Commit Graph

36058 Commits

Author SHA1 Message Date
Alexander Smorkalov f82522ccfb Merge pull request #28589 from nmizonov:fix_ippiw_binary_usage
Fixed search of IPP IW binaries in cmake
2026-03-31 10:27:41 +03:00
SamareshSingh 2027a33990 Merge pull request #28724 from ssam18:fix/resize-ngraph-two-inputs-28707
dnn: fix Resize initNgraph for two-input case #28724

## Summary

Fixes the issue #28707

When a Resize/Upsample layer has two inputs, the data tensor and a reference tensor whose **shape** defines the output spatial size, the OpenVINO/NGRAPH backend's `initNgraph()` was ignoring `nodes[1]` entirely and relying solely on the `outHeight`/`outWidth` member variables.

These variables are set by `finalize()` from the pre-computed output blob dimensions. However, when the output shape is determined dynamically at runtime from the second input, `finalize()` sets them from the live tensor, but the OpenVINO backend calls `initNgraph()` to build a static compiled graph. If the member variables are 0 at that point, the compiled `Interpolate` node gets hardcoded with `{0, 0}` output dimensions, causing CV_Assert failure: {N,C,0,0} vs {N,C,H2,W2}
2026-03-30 10:06:54 +03:00
Anshu c7732e1043 Merge pull request #28397 from 0AnshuAditya0:fix-simd-oob-read-28396
Fixes #28396 : out-of-bounds read in SIMD type conversion #28397

Fixes #28396
Fixes #27080

The vx_load_expand function in WASM intrinsics was using 
wasm_v128_load which always loads a full 128-bit register 
(16 bytes), even when the function only needed 8 elements.

For example, when converting uint8 to float32:
- vx_load_expand needs 8 uint8 elements
- But wasm_v128_load reads 16 bytes from memory
- This causes an 8-byte out-of-bounds read

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2026-03-27 15:40:09 +03:00
Alexander Smorkalov 1630450d25 Merge pull request #28727 from asmorkalov:as/calibrate_perf_data
Replace calibration images with saved image points.
2026-03-27 14:59:33 +03:00
Alexander Smorkalov d45b442f4e Replace calibration images with saved image points. 2026-03-27 10:52:21 +03:00
Alexander Smorkalov 689d514885 Merge pull request #28698 from PDGGK:fix/android-utils-resource-leak
Fix resource leaks in Android Utils.java (#28697)
2026-03-26 15:33:04 +03:00
Rohan Mistry 7e5463b34f Merge pull request #28461 from Ron12777:opt-clean
Optimize calibrateCamera with Schur‑complement LM and parallel Jacobian accumulation #28461

## Summary

- Optimized `calibrateCamera` for faster runtime without changing outputs using Schur‑complement LM, Parallel Jacobian accumulation, alongside other optimizations.
- Reduced time complexity from O(n^3) to O(n)
- Add a perf test that uses a 500-image chessboard dataset for performance testing.

## Performance
<img width="1200" height="800" alt="base_vs_fast_results" src="https://github.com/user-attachments/assets/6dafa19f-f9cb-4f7f-ba40-0940373712e8" />
<img width="1200" height="800" alt="fast_vs_ceres_results" src="https://github.com/user-attachments/assets/7157af27-8a2b-4810-8b53-3cc9972a8493" />
<img width="1200" height="800" alt="base_vs_fast_param_deviation" src="https://github.com/user-attachments/assets/fe4f954c-34f9-4b9a-b1b2-46e4c76ce08c" />


[Testing repo
](https://github.com/Ron12777/OpenCV-benchmarking)
## Testing
- All local tests pass 

## Related

- [opencv_extra PR with test images](https://github.com/opencv/opencv_extra/pull/1312)


See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2026-03-26 12:18:50 +03:00
Alexander Smorkalov 3c7fd7c25a Merge pull request #28723 from akretz:fix-mean-perf
Benchmark cv::mean instead of cvtest::mean
2026-03-26 11:40:37 +03:00
Adrian Kretz a4d9b45168 Benchmark cv::mean instead of cvtest::mean 2026-03-25 21:30:22 +01:00
ffccites 16db340890 Fix resource leaks in Android Utils.java (#28697)
Convert exportResource() and loadResource() to use try-with-resources
to ensure InputStream, FileOutputStream, and ByteArrayOutputStream are
properly closed even when exceptions occur.

Also remove printStackTrace() in exportResource(), as the exception is
already rethrown as CvException with the original exception details.

Signed-off-by: ffccites <99155080+PDGGK@users.noreply.github.com>
2026-03-24 16:41:40 +11:00
Alexander Smorkalov 45c1f9d803 Merge pull request #28652 from mvanhorn:osc/28651-fix-reprojection-error-rmse
calib3d: fix reprojection error RMSE calculation in Python tutorial
2026-03-23 17:08:16 +03:00
ZIHAN DAI 1610602884 Merge pull request #28699 from PDGGK:fix/highgui-system-exit
Replace System.exit(-1) with exceptions in HighGui.java (#28696) #28699

## Summary

Library code should never call System.exit() as it kills the entire JVM. Replaced all 3 instances with appropriate exceptions.

Closes #28696

## Changes

- `imshow()` with empty image: `System.exit(-1)` -> `throw new IllegalArgumentException("Image is empty")`
- `waitKey()` with no windows: `System.exit(-1)` -> `throw new IllegalStateException("No windows created. Call imshow() first")`
- `waitKey()` with null window image: `System.exit(-1)` -> `throw new IllegalStateException("No image set for window: ... Call imshow() first")`
- `InterruptedException` catch: `printStackTrace()` -> `Thread.currentThread().interrupt()`
2026-03-23 16:20:50 +03:00
Alexander Smorkalov 4413c953d1 Merge pull request #28684 from abhishek-gola:AVX_VNNI_support_4.x
Added AVX_VNNI function to core module
2026-03-20 12:50:37 +03:00
Abhishek Gola ff2e6358fd added AVXX VNNI support 2026-03-20 13:20:31 +05:30
Alexander Smorkalov f6aceee13b Merge pull request #28655 from usernotfound-101:cvmixchannels-warning-fix
Add static integer casting for cvMixChannels, safer
2026-03-20 10:25:38 +03:00
Alexander Smorkalov 9e5cd6bf9b Merge pull request #28665 from PavelGuzenfeld:fix/stale-typing-stubs-cleanup
Clean up stale typing stubs during incremental builds
2026-03-18 08:13:21 +03:00
Alexander Smorkalov 1c3958384c Merge pull request #28662 from CSBVision:patch-9
Change file globbing to recursive for CUDA DLLs
2026-03-17 18:24:27 +03:00
Pavel Guzenfeld 3779f630bc Clean up stale typing stubs during incremental builds
When a module is disabled in an incremental build (e.g. switching from
-DBUILD_opencv_gapi=ON to OFF), its typing stub directory persists from
the previous build.  The stubs generator only creates directories for
enabled modules but never removes old ones, and the copy step merges
rather than replaces, so stale .pyi files propagate to both the loader
directory and the install prefix.

This causes type-checkers (mypy, pyright) to report errors for stubs
that reference symbols from modules that are no longer available.

Fix both propagation paths:

- generation.py: remove all subdirectories under the stubs output root
  before regenerating, so only currently enabled module stubs exist in
  the build directory.  Top-level files (py.typed) are preserved.

- copy_typings_stubs_on_success.py: remove stale .pyi files and
  py.typed markers from the loader directory before copying fresh stubs,
  so leftover stubs from a previous copy are cleaned up.  Runtime .py
  files are not affected.
2026-03-16 23:41:37 +02:00
pratham-mcw 2dd3d1371a Merge pull request #28636 from pratham-mcw:imgproc_distance_transform_opt
imgproc: add SIMD support for distance transform function #28636

- This PR adds OpenCV SIMD intrinsics-based optimizations to the distance transform functions for improved performance.
- The optimized implementation uses vectorized operations to accelerate the forward and backward passes of distance computation.
- In x64 architecture, distance transform function benefit from IPP-based optimized implementations. However, on ARM64 platforms, the execution falls back to scalar implementation, which results in lower performance.
- After introducing these changes, the distance transform functions showed noticeable performance improvements on Windows-ARM64.
<img width="800" height="706" alt="image" src="https://github.com/user-attachments/assets/9786606a-9d92-489d-a5ea-d2e57453ef02" />

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
2026-03-16 13:51:03 +03:00
CSBVision faf36aa95b Change file globbing to recursive for CUDA DLLs
With recent releases, the CUDA installation layout changes introduces a `bin\x64` subdirectory. Recursive glob inside `bin` works in either case.
2026-03-16 11:28:56 +01:00
Alexander Smorkalov 2c839967ff Merge pull request #28660 from PavelGuzenfeld:fix/gapi-optional-module-handling
Fix Python bindings when optional modules are disabled
2026-03-16 11:06:57 +03:00
Pavel Guzenfeld 95ab7149fe Fix Python bindings when optional modules like gapi are disabled
Fix two issues that cause `import cv2` to fail when building with
-DBUILD_opencv_gapi=OFF:

1. In `has_all_required_modules()`, the function parameter `type_node`
   was ignored in favor of the enclosing scope's loop variable `node`.
   This works by accident when called as `has_all_required_modules(node)`
   but is incorrect — the parameter should be used directly.

2. In `__load_extra_py_code_for_module()`, only `ImportError` was
   caught. When a stale gapi submodule directory exists from a previous
   build, gapi/__init__.py raises `AttributeError` (not `ImportError`)
   because it tries to access C++ bindings that don't exist. Now catches
   both exception types for defense-in-depth.

Refs: #26098
2026-03-15 23:21:42 +02:00
Matt Van Horn 5e4592440e calib3d: fix reprojection error RMSE calculation in Python tutorial
The tutorial code used cv.NORM_L2 (which takes a square root) and then
averaged those values. The correct RMSE formula should use NORM_L2SQR
to get squared errors, average them, and take the square root at the
end. Updated the explanatory text to match.

Fixes https://github.com/opencv/opencv/issues/28651
2026-03-13 10:00:23 -07:00
usernotfound-101 3470f5b35b Add static integer casting to get rid of the warning, safer 2026-03-13 22:25:08 +05:30
Madan mohan Manokar 00833f98d0 Merge pull request #28632 from amd:fast_scharr_deriv
video: Optimized ScharrDeriv#28632

- Move to CV_SIMD_SCALABLE
- avx2 & avx512 dispatch added for ScharrDeriv

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2026-03-13 13:04:46 +03:00
Alexander Smorkalov 8f9c7c0f72 Merge pull request #28643 from Prasadayus:fix-gather-cast-axis-4x
DNN/ONNX: Preserve axis attribute in GatherCastSubgraph fusion
2026-03-13 11:46:19 +03:00
Madan mohan Manokar 18c7c9bcb9 Merge pull request #28614 from amd:fast_flipHoriz
Optimized flip Horizontal #28614

- Refactor flipHoriz implementation.
- Optimizations for horizontal image flipping added.

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [x] The feature is well documented and sample code can be built with the project CMake
2026-03-13 11:11:20 +03:00
rajmahadev422 84300d5025 Merge pull request #28618 from rajmahadev422:vscode_opencv
### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake

## This tutorial describe how to build opencv from source in windows using VSCode and MSYS2
2026-03-13 10:38:39 +03:00
Alexander Smorkalov a1a0cc2891 Merge pull request #28644 from s-trinh:fix_calibration_exe_ignore_orientation
Ignore exif orientation and add option for the calibration exe
2026-03-12 10:53:13 +03:00
Matt Van Horn 8e1fa1bbdc Merge pull request #28620 from mvanhorn:osc/28619-fix-yaml-parsekey-empty-key-oob
core: fix heap-buffer-overflow in YAML parseKey for empty keys #28620

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake

### Description

Fixes https://github.com/opencv/opencv/issues/28619

Moves the "empty key" check before the backward do-while scan in `YAMLParser::parseKey()`.

**Problem:** When parsing a YAML mapping with an empty key (e.g. `: 10` at column 0), `endptr == ptr` after the forward scan finds `:`. The do-while loop `do c = *--endptr; while(c == ' ')` always executes at least once, so it decrements `endptr` to `ptr-1` and reads one byte before the heap allocation (ASan: heap-buffer-overflow READ of size 1).

**Fix:** Check `endptr == ptr` before entering the backward loop. If the key is empty, raise `CV_PARSE_ERROR_CPP("An empty key")` immediately without the OOB read.

This contribution was developed with AI assistance (Claude Code).
2026-03-12 10:37:24 +03:00
Alexander Smorkalov 1a3e1e05b7 Merge pull request #28581 from JoyBoy900908:fix-ubsan-countnonzero
core: fix UBSan function pointer type mismatch in countNonZero
2026-03-12 10:16:17 +03:00
Souriya Trinh a02fcb360d By default, exif orientation is ignored when reading images sequence for the calibration exe. Add an option to apply exif image orientation. 2026-03-11 09:02:32 +01:00
Prasad Ayush Kumar fb6f5cc282 DNN/ONNX: Preserve axis attribute in GatherCastSubgraph fusion 2026-03-11 13:12:09 +05:30
Alexander Smorkalov 4391bd4cb4 Merge pull request #28641 from s-trinh:fix_calibration_exe_no_charuco
Fix calibration sample when the board is not a Charuco
2026-03-11 09:44:53 +03:00
Matt Van Horn c3457f99f3 Merge pull request #28621 from mvanhorn:osc/28528-fix-houghcircles-return-type
imgproc: fix HoughCircles Python return type to allow None #28621

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake

### Description

Fixes https://github.com/opencv/opencv/issues/28528

`HoughCircles` returns `None` when no circles are found, but the auto-generated Python type stub declares the return type as `MatLike` without `None`. This causes type checkers (mypy/pyright) to miss potential `None` dereferences.

**Fix:** Add `HoughCircles` to `NODES_TO_REFINE` in `api_refinement.py` using the existing `make_optional_none_return` helper - the same pattern already used for `imread` and `imdecode`.

This contribution was developed with AI assistance (Claude Code).
2026-03-11 08:55:36 +03:00
Souriya Trinh 918244763d Create Charuco objects only if the selected pattern is a Charuco board. Otherwise it gives the following error:
opencv/modules/objdetect/src/aruco/aruco_board.cpp:543: error: (-215:Assertion failed) size.width > 1 && size.height > 1 && markerLength > 0 && squareLength > markerLength in function 'CharucoBoard'
2026-03-10 12:15:50 +01:00
JoyBoy900908 7286212ce6 core: use void* in countNonZero signature per team review 2026-03-09 14:20:43 +08:00
Alexander Smorkalov d719c6d84a Merge pull request #28607 from s-trinh:update_calib3d_images_white_background
Add white background for images in calib3d
2026-03-06 15:53:21 +03:00
Souriya Trinh 7f164b5653 Add a white background for images which have a transparent background in the calib3d module.
See:
  - https://github.com/opencv/opencv/pull/28450
  - https://github.com/opencv/opencv/pull/28426
2026-03-05 11:06:14 +01:00
Anshu fe160f3eed Merge pull request #28548 from 0AnshuAditya0:fix-minEnclosingCircle-welzl-28546
imgproc: fix minEnclosingCircle O(n^3) worst case by adding Welzl shuffle #28548

Welzl's algorithm requires random permutation of input points to
achieve expected O(n) time. Without shuffling, sorted inputs such
as those produced by findContours() trigger O(n^3) worst case.

Fix: copy input to std::vector<PT> and apply cv::randShuffle()
before processing. Uses OpenCV's RNG so cv::setRNGSeed() ensures
reproducible behavior.

Original benchmark (5088 contour points, Release, AVX2):
findContours output: 3.93 ms → 0.033 ms (119x speedup)
Random points: 0.051 ms → 0.049 ms (no regression)

Perf test results (this PR, Release, AVX2):
| Input | N | Time |
|-------|---|------|
| Sequential circle points | 10000 | 0.03 ms |
| Sequential circle points | 5000 | 0.01 ms |
| Random points (CV_32F) | 100000 | 1.87 ms |
| Random points (CV_32S) | 100000 | 2.81 ms |

Fixes #28546

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2026-03-04 15:16:07 +03:00
Jonas Perolini 5e91b461bc Merge pull request #28289 from JonasPerolini:pr-aruco-identification
Identify ArUco markers based on threshold to reduce false positives #28289

**Goal:** parametrize the current marker identification process (pixel-based majority count) to reduce the number of false positives while maintaining high recall. Useful in high risk scenarios in which false positives are not acceptable. 

**Context:** This PR builds on top of https://github.com/opencv/opencv/pull/23190 in which we've introduced a pixel-based confidence in the marker detection.

**Solution:** Include a new parameter: `validBitIdThreshold` used to identify markers based on the pixel count of each cell. Set the parameter default either to 50% which is equivalent to the current majority count implementation or to 49% which already singnificantly reduces the number of false positives (see details below). 

**Test coverage:** 
- Unit tests: `CV_ArucoDetectionThreshold`, `CV_InvertedArucoDetectionThreshold`
- The impact of `validBitIdThreshold` on false positives was also tested using the benchmark dataset: `MIRFLICKR-25k` https://www.kaggle.com/datasets/skfrost19/mirflickr25k which contains random images without any markers. Every marker detection is a false positive. 

Example of images in the dataset:

![im2048](https://github.com/user-attachments/assets/3e38796b-67ce-44be-a91d-2fd268414515)

![im17627](https://github.com/user-attachments/assets/37253b9f-829d-4bac-b9fc-c844d16f546e)

**Results:** A threshold of 49% already allows to significantly reduce the number of false positives for the dict `DICT_4X4_1000`: 
- `5942` false positives for `validBitIdThreshold = 0.5`
- `629` false positives for `validBitIdThreshold = 0.49` and `0.46` 
   - number of false positives divided by `9.5` when compared to `validBitIdThreshold = 0.5`
- `139` false positives for `validBitIdThreshold = 0.43` and `0.4` 
   - number of false positives divided by `42` when compared to `validBitIdThreshold = 0.5`

Dicts with a higher number of cells are not as impacted since it's much harder to obtain false positives. However, the less cells in a marker the further away it can be reliably detected, so the dict `DICT_4X4_1000` is commonly used.

<img width="1280" height="800" alt="false_positive_image_rate" src="https://github.com/user-attachments/assets/1a0ee16a-221d-443e-835b-022ed6dea6b0" />

In the image attached, the values of `validBitIdThreshold` tested are:  `0.10f, 0.20f, 0.30f, 0.40f, 0.43f, 0.46f, 0.49f, 0.50f, 0.53f, 0.56f, 0.60f, 0.70f, 0.80f, 0.90f`

Summary of the results: [summary.csv](https://github.com/user-attachments/files/24315662/summary.csv)

Note that we can also analyse the number of false positives per marker `id`. For example, here's the histogram for the dict `DICT_4X4_1000`. (The CSV attached contains all the results)

<img width="1440" height="640" alt="false_positive_ids_DICT_4X4_1000_thr0 50" src="https://github.com/user-attachments/assets/af4f3ff8-9b8f-4682-9d51-a090c2610d8c" />

For example, the marker id 17 is detected 252 times with  `validBitIdThreshold = 0.5` and only 34 times with `validBitIdThreshold = 0.49`. Looking at marker 17 (see below), we understand that this simple pattern randomly occurs in images.

<img width="447" height="441" alt="Marker17" src="https://github.com/user-attachments/assets/f5d09227-b39b-4598-94f9-b529f8300703" />

Results for every dict and every `validBitIdThreshold` [per_id.csv](https://github.com/user-attachments/files/24315667/per_id.csv)

**Missing coverage:** there is no labeled dataset with images containing markers to analyse the impact of on the recall  (i.e. look at the true positive rate). For my specific use case (drones) any threshold above `0.4` allows to maintain a high recall in all conditions.

### Pull Request Readiness Checklist


- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2026-03-04 08:44:28 +03:00
Murat Raimbekov 91c78f5064 Merge pull request #28309 from raimbekovm:fix-typos-batch6
docs: fix typos in documentation and code comments #28309

## Summary

This PR fixes 10 spelling errors in documentation and code comments across 7 files.

## Changes
- `suppport` → `support` (2 occurrences in test_video_io.cpp)
- `compability` → `compatibility` (2 occurrences in face.hpp)
- `successfull` → `successful` (1 occurrence in cv2.cpp)
- `accomodate` → `accommodate` (2 occurrences in calib3d.hpp and test_camera.cpp)
- `minimun` → `minimum` (1 occurrence in aruco_detector.hpp)
- `maximun` → `maximum` (1 occurrence in aruco_detector.hpp)
- `orignal` → `original` (1 occurrence in aruco_detector.cpp)

## Test plan
- [x] No API changes
- [x] Documentation-only changes
- [x] Code compiles without errors
2026-03-03 14:29:47 +03:00
ADITYA MISHRA 1099135b88 Merge pull request #28592 from AdityaMishra3000:fix-openvino-2026-constness
DNN: Fix OpenVINO 2026 build failure due to ov::Tensor::data() const change #28592

Fixes: https://github.com/opencv/opencv/issues/28586

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [x] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake

### PR Description

OpenVINO 2026 changed ov::Tensor::data() to return `const void*`
instead of `void*`. This causes a build error in
modules/dnn/src/op_inf_engine.cpp when constructing a cv::Mat
wrapper over Tensor memory.

Tensor memory for input/output blobs remains mutable, but the API
now enforces const-correct access. This patch casts away const with
an explicit comment to preserve existing zero-copy semantics and
restore compatibility with OpenVINO 2026.
Preserves existing zero-copy semantics of the OpenVINO backend without altering runtime behavior.

Tested by building OpenCV 4.x against OpenVINO 2026.0.0 on Ubuntu 24.04.
2026-03-03 13:56:38 +03:00
Alexander Smorkalov c1c48dd17f Merge pull request #28591 from vrabaud:asan
Make sure j < maxRow in smooth functions
2026-03-03 08:56:36 +03:00
Alexander Smorkalov 6926b4218e Merge pull request #28590 from GideokKim:fix/fitellipse-redundant-fabs
imgproc: remove redundant fabs() in fitEllipseDirect
2026-03-03 08:52:41 +03:00
Alexander Smorkalov f46498b3c7 Merge pull request #28587 from intel-staging:staging/ekharkov/arithm
Restored IPP in cv::compare
2026-03-03 08:49:20 +03:00
Vincent Rabaud 517bc1c777 Make sure j < maxRow in smooth functions
Otherwise some values out of memory can be read.
This was found with ASAN.
2026-03-02 18:23:31 +01:00
gideok Kim 6676c04d7c imgproc: remove redundant fabs() in fitEllipseDirect
In fitEllipseDirect, `double det = fabs(cv::determinant(M))` applies
fabs() unnecessarily since the next line `if (fabs(det) > 1.0e-10)`
already takes the absolute value. Remove the outer fabs() to avoid
the redundant operation.
2026-03-02 22:23:54 +09:00
nmizonov b7266c92fd Fix IPPIW binaries search 2026-03-02 05:03:50 -08:00
ekharkov 30aa3c9266 Revert "Disable IPP with AVX512 in cv::compare because of performance regression" 2026-03-02 01:47:14 -08:00