1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-28 23:03:03 +04:00
Commit Graph

35984 Commits

Author SHA1 Message Date
Alexander Smorkalov f819581bd4 Merge pull request #28545 from vrabaud:c_headers
Help compiler vectorize loops in meanSplit
2026-02-17 08:34:23 +03:00
Vincent Rabaud feee8b202d Help compiler vectorize loops in meanSplit
Otherwise, it does not know dataset_, mean_ and var_ do not
overlap.
2026-02-16 13:30:43 +01:00
Alexander Smorkalov a8d26a042b Merge pull request #28489 from KAVYANSHTYAGI:module-inspection
imgproc: Fix precision loss in Laplacian 3x3 kernel for CV_64F inputs
2026-02-14 13:21:54 +03:00
Alexander Smorkalov c4b20061de Merge pull request #28537 from reeseliao:fix-typo-gapi
docs: fix typo 'neccessary' in gapi module
2026-02-14 13:05:53 +03:00
Igraine 0e8441a66b docs: fix typo 'neccessary' in gapi module 2026-02-13 16:34:31 +08:00
Murat Raimbekov dc0a276edc Merge pull request #28324 from raimbekovm:fix-kaze-charbonnier
features2d: add missing KAZE DIFF_CHARBONNIER support #28324

### Description

This PR fixes the missing implementation for `DIFF_CHARBONNIER` diffusivity type in KAZE feature detector.

### Changes
- Added `charbonnier_diffusivity()` call for `DIFF_CHARBONNIER` type in `Create_Nonlinear_Scale_Space()`
- Added proper error handling for unsupported diffusivity types

### Problem
When using KAZE with `DIFF_CHARBONNIER` diffusivity type, keypoint coordinates were not computed at subpixel level, because the code lacked the specific handling for this diffusivity mode.

### Solution
The `charbonnier_diffusivity()` function already exists in `nldiffusion_functions.cpp`, it just wasn't being called. This PR adds the missing `else if` branch to call it, matching the pattern already implemented in `AKAZEFeatures.cpp`.

Fixes #27134

### 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 copyleft license.
- [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
- [ ] The feature is well documented and sample code can be built with the project CMake
2026-02-11 15:06:26 +03:00
Alexander Smorkalov a87c227400 Merge pull request #28470 from Satge96:refine-calib-py-type
fix: mark distCoeffs, cameraMatrix as optional in calibrateCamera fun…
2026-02-11 09:53:08 +03:00
Alexander Smorkalov 7b3977727c Merge pull request #28460 from falloficarus22:qrcode-remove-duplicated-compute
Optimize duplicated computation in QR code error correction
2026-02-10 09:17:15 +03:00
Hanbin Bae 7942f976c1 Merge pull request #28511 from Anemptyship:optimize/slice-parallel-4.x
optimize(dnn): parallelize Slice layer implementation (4.x) #28511

### Summary
Backport of PR #28447 to 4.x branch.

### Description
This PR optimizes the SliceLayer implementation for strided inputs (where step > 1). The original implementation used a recursive element-wise copy (getSliceRecursive) for any strided slice, which was extremely inefficient.

This PR introduces:
- **Parallelization**: Uses `cv::parallel_for_` to parallelize the outermost dimension of the slice operation.
- **Memcpy Optimization**: Automatically detects "pseudo-contiguous" blocks in strided slices (e.g., slicing an outer dimension but keeping inner dimensions intact) and uses `std::memcpy` instead of scalar loops.
- **Refactoring**: Replaces the recursive function with a dedicated `ParallelSlice` loop body.

### Impact
Significant performance improvement for strided slice operations (common in detection heads, strided sampling, etc.).

### Benchmark Results
Tested on CPU with 20 threads.

| Test Case | Baseline (ms) | Optimized (ms) | Speedup |
| :--- | :--- | :--- | :--- |
| Strided Axis 0 [::2, ...] | 1.10 | 0.02 | **~55x** |
| Strided Axis 2 [..., ::2] | 1.15 | 0.11 | **~10.5x** |

### 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
- [ ] The feature is well documented and sample code can be built with the project CMake
2026-02-10 09:11:13 +03:00
Alexander Smorkalov 5c9fb7db76 Merge pull request #28510 from Anemptyship:optimize/resize-parallel-4.x
optimize(dnn): parallelize Resize layer implementation
2026-02-10 08:55:25 +03:00
Alexander Smorkalov 8ccbf4c5e4 Merge pull request #28505 from Kumataro:fix28498_obsensor
videoio(obsensor): replace unnecessary get<double>() usage with integer types
2026-02-09 14:43:26 +03:00
Alexander Smorkalov 284c48bbe6 Merge pull request #28504 from Kumataro:fix28498_msmf
videoio(msmf): replace unnecessary get<double>() usage with integer types
2026-02-09 14:41:53 +03:00
Alexander Smorkalov 8e84acad95 Merge pull request #28499 from Kumataro:fix28498_gst
videoio(gst): replace unnecessary get<double>() usage with integer types
2026-02-09 14:40:00 +03:00
Anemptyship 12b5091ba4 optimize(dnn): parallelize Resize layer implementation
Backport of PR #28442 to 4.x branch.

Signed-off-by: Anemptyship <ben.bae@samsung.com>
2026-02-09 03:08:49 +00:00
Kumataro 71ed3dccaf videoio(obsensor): replace unnecessary get<double>() usage with integer types 2026-02-08 06:43:01 +09:00
Kumataro 9224e5d90a videoio(msmf): replace unnecessary get<double>() usage with integer types 2026-02-08 06:36:54 +09:00
Kumataro 11d318b540 videoio(gst): replace unnecessary get<double>() usage with integer types 2026-02-07 13:36:50 +09:00
Karnav Shah aea90a9e31 Merge pull request #28308 from shahkarnav115-beep:dnn-mvn-defensive-checks
dnn: improve robustness of MVN layer#28308

This change adds small defensive improvements to the MVN layer implementation:

->Guard against zero-sized OpenCL kernel launches

->Add input validation in finalize()

->Use int64 for FLOPS computation to avoid overflow

No functional or performance changes are intended.

### 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
2026-02-06 13:47:15 +03:00
Murat Raimbekov c7729066c4 Merge pull request #28379 from raimbekovm:fix-bmp-sunras-overflow
imgcodecs: fix integer overflow in BMP and SunRaster decoders #28379

### 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
- [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

Fixes #28350

### Description

This PR fixes integer overflow vulnerabilities in BMP and SunRaster image decoders that could cause heap buffer over-read when decoding malformed images.

### Root Cause

The `src_pitch` and `width3` calculations in `BmpDecoder::readData()` and `SunRasterDecoder::readData()` used `int` arithmetic:

```cpp
int src_pitch = ((m_width * m_bpp + 7) / 8 + 3) & -4;
int width3 = m_width * nch;
```

When `m_width` or `m_bpp` are large values from a crafted malicious file, the multiplication overflows, resulting in a small or negative value. This leads to insufficient buffer allocation, causing heap buffer over-read during subsequent decoding operations.

### Fix

1. **Use `size_t` arithmetic**: Cast operands to `size_t` before multiplication:
   ```cpp
   const size_t bits_per_row = static_cast<size_t>(m_width) * static_cast<size_t>(m_bpp);
   const size_t src_pitch_size = ((bits_per_row + 7) / 8 + 3) & ~static_cast<size_t>(3);
   ```

2. **Add size validation**: Added `CV_CheckLT` to reject images requiring buffers larger than 256MB:
   ```cpp
   const size_t MAX_SRC_PITCH = static_cast<size_t>(1) << 28;
   CV_CheckLT(src_pitch_size, MAX_SRC_PITCH, "BMP: src_pitch exceeds maximum allowed size");
   ```

3. **Safe conversion**: Use `validateToInt()` for safe conversion back to `int`.

### Files Changed

- `modules/imgcodecs/src/grfmt_bmp.cpp` - BmpDecoder::readData()
- `modules/imgcodecs/src/grfmt_sunras.cpp` - SunRasterDecoder::readData()

### Testing

- Code compiles without warnings
- Basic BMP and SunRaster encode/decode tests pass
- Overflow conditions are now properly rejected with CV_CheckLT
2026-02-06 13:39:55 +03:00
Alexander Smorkalov 5134109705 Merge pull request #28451 from vrabaud:lsh
Remove unused C structs from VideoCapture/VideoWriter
2026-02-06 13:38:50 +03:00
Arnie Chang 52633170a7 Merge pull request #28375 from arniechangsifive:dev/arniec/fix-fails-on-tail-agnostic-as-1s
hal/riscv-rvv: Fix test failures on hardware that implements tail-agnostic as all 1s #28375

### 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

### Summary
Fix test failures in `opencv_test_core` and `opencv_test_imgproc` on hardware that implements the tail-agnostic policy by overwriting tail elements with all 1s

### Root Cause
According to the [RISC-V Vector Extension Specification v1.0](https://github.com/riscvarchive/riscv-v-spec/blob/master/v-spec.adoc#343-vector-tail-agnostic-and-vector-mask-agnostic-vta-and-vma):

> "When a set is marked agnostic, the corresponding set of destination elements in any vector destination operand can either retain the value they previously held, or are overwritten with 1s."

Both `dotProd_32f` and `dotProd_32s` functions use accumulator variables(`s`) that persist across loop iterations, but were using vector intrinsics with tail-agnostic policy. The tail elements can be overwritten with 1s, corrupting the accumulator and producing NaN during the final reduction sum.

### Solution
Changed both functions to use `tail-undisturbed`(`tu`) policy to ensure tail elements remain unchanged across loop iterations.

### Reproduce Steps
The failures can be reproduced using [QEMU](https://gitlab.com/qemu-project/qemu) with `rvv_ma_all_1s=true` and `rvv_ta_all_1s=true` options to emulate hardware implementing tail-agnostic policy as all 1s.

#### Reproduce **`opencv_test_core`** failures:
```
qemu-riscv64 -cpu rv64,zba=true,zbb=true,zbc=true,zbs=true,v=true,vlen=512,elen=64,vext_spec=v1.0,rvv_ma_all_1s=true,rvv_ta_all_1s=true -L '/PATH_TO_SYSROOT/sysroot/' ./opencv_test_core --gtest_filter="Core_DotProduct*"
```
Before the patch:
```
[  FAILED  ] Core_DotProduct.accuracy (24 ms)
```
After the patch:
```
[  PASSED  ] 1 test.
```

#### Reproduce **`opencv_test_imgproc`** failures:
```
qemu-riscv64 -cpu rv64,zba=true,zbb=true,zbc=true,zbs=true,v=true,vlen=512,elen=64,vext_spec=v1.0,rvv_ma_all_1s=true,rvv_ta_all_1s=true -L '/workspace/riscv/sysroot/' ./opencv_test_imgproc --gtest_filter="fitLine_Modes.accuracy/*"
```
Before the patch
```
[  FAILED  ] 24 tests, listed below:
[  FAILED  ] fitLine_Modes.accuracy/0, where GetParam() = (13, 1)
[  FAILED  ] fitLine_Modes.accuracy/1, where GetParam() = (13, 2)
[  FAILED  ] fitLine_Modes.accuracy/2, where GetParam() = (13, 4)
[  FAILED  ] fitLine_Modes.accuracy/3, where GetParam() = (13, 5)
[  FAILED  ] fitLine_Modes.accuracy/4, where GetParam() = (13, 6)
[  FAILED  ] fitLine_Modes.accuracy/5, where GetParam() = (13, 7)
[  FAILED  ] fitLine_Modes.accuracy/6, where GetParam() = (21, 1)
[  FAILED  ] fitLine_Modes.accuracy/7, where GetParam() = (21, 2)
[  FAILED  ] fitLine_Modes.accuracy/8, where GetParam() = (21, 4)
[  FAILED  ] fitLine_Modes.accuracy/9, where GetParam() = (21, 5)
[  FAILED  ] fitLine_Modes.accuracy/10, where GetParam() = (21, 6)
[  FAILED  ] fitLine_Modes.accuracy/11, where GetParam() = (21, 7)
[  FAILED  ] fitLine_Modes.accuracy/12, where GetParam() = (12, 1)
[  FAILED  ] fitLine_Modes.accuracy/13, where GetParam() = (12, 2)
[  FAILED  ] fitLine_Modes.accuracy/14, where GetParam() = (12, 4)
[  FAILED  ] fitLine_Modes.accuracy/15, where GetParam() = (12, 5)
[  FAILED  ] fitLine_Modes.accuracy/16, where GetParam() = (12, 6)
[  FAILED  ] fitLine_Modes.accuracy/17, where GetParam() = (12, 7)
[  FAILED  ] fitLine_Modes.accuracy/18, where GetParam() = (20, 1)
[  FAILED  ] fitLine_Modes.accuracy/19, where GetParam() = (20, 2)
[  FAILED  ] fitLine_Modes.accuracy/20, where GetParam() = (20, 4)
[  FAILED  ] fitLine_Modes.accuracy/21, where GetParam() = (20, 5)
[  FAILED  ] fitLine_Modes.accuracy/22, where GetParam() = (20, 6)
[  FAILED  ] fitLine_Modes.accuracy/23, where GetParam() = (20, 7)
```

After the patch
`[  PASSED  ] 24 tests.`
2026-02-05 15:50:31 +03:00
Kavyansh Tyagi 1d5f28a44f Fix Laplacian kernel precision for double inputs 2026-02-03 13:32:34 +05:30
Alexander Smorkalov 227b751f48 Merge pull request #28394 from amd:medianBlurImp
medianBlur improvement with AVX512 ICL dispatch
2026-01-30 16:04:54 +03:00
Alexander Smorkalov 937c4afa33 Merge pull request #28479 from barucden:patch-1
Fix typo in logger.hpp
2026-01-30 15:24:38 +03:00
Vincent Rabaud 4475fb24ca Remove unused C structs from VideoCapture/VideoWriter 2026-01-30 10:54:21 +01:00
Denis Barucic bca17bcd29 Fix typo in logger.hpp
I believe this was just a copy-paste error.
2026-01-30 10:38:17 +01:00
Alexander Smorkalov 8338b5cf08 Merge pull request #28450 from asmorkalov:as/doxygen_color_theme
Add color theme button to documentation.
2026-01-30 11:14:55 +03:00
Alexander Smorkalov 55a8996ffe Merge pull request #28346 from yeatse:feature/remove-apple-bitcode
Remove deprecated bitcode support from Apple framework build scripts
2026-01-28 14:44:43 +03:00
Siddharth Panditrao 0c613de006 Merge pull request #28380 from WalkingDevFlag:fix/charuco-detector-offset-25539
Fix ~0.5px systematic offset in CharucoDetector subpixel refinement #28380

Resolves #25539

### Problem

`CharucoDetector::detectBoard` produces Charuco corner coordinates that are consistently offset by approximately **+0.5 pixels** compared to `findChessboardCorners + cornerSubPix`.

This offset is systematic (mean ≈ −0.5 px when comparing legacy − Charuco) and reproducible across images. Visual inspection also shows that the legacy chessboard detector aligns better with the actual corner locations.

### Root cause

In `charuco_detector.cpp`, the points passed to `cornerSubPix` are manually shifted by `-Point2f(0.5f, 0.5f)` before refinement and then shifted back by `+Point2f(0.5f, 0.5f)` after refinement.

However, `cornerSubPix` refines corners in **absolute image coordinates** and converges to the true saddle point based on image gradients. Shifting the initial guess does not affect the converged result as long as the true corner lies within the refinement window.

The additional `+0.5` shift applied after refinement therefore introduces a constant bias, resulting in:

```

P_out = P_true + 0.5

```

### Solution

Remove the manual `±0.5` coordinate shifts around the `cornerSubPix` call and let the refined result be returned directly.

### Test updates

Updated expected corner values in the following tests:

- `testBoardSubpixelCoords`
- `testSeveralBoardsWithCustomIds`

The previous expected values (e.g. `200`, `250`, `300`) were only correct due to the +0.5px bias introduced by the bug.

`generateImage` creates checkerboard squares of exactly **50 pixels**, which places true corner locations on **pixel boundaries** rather than pixel centers. As a result, the correct subpixel coordinates are:

```

199.5, 249.5, 299.5

```

instead of the previously expected integer values.

After updating the expected values, all **30 Charuco-related tests pass** with the fix applied.

### Verification

I verified the fix using a Python reproducer that compares `CharucoDetector` output against `findChessboardCorners + cornerSubPix`:

- **Before fix:** mean error ≈ −0.501 px  
![before_fix_multilocus](https://github.com/user-attachments/assets/cc812956-c081-4f00-a7e2-78b7427b1235)
![before_fix_zoomed_small](https://github.com/user-attachments/assets/7e6887cb-b09d-47dc-9fcd-03a27b17f310)

- **After fix:** mean error ≈ −0.001 px
![after_fix_multilocus](https://github.com/user-attachments/assets/1c4f8dfa-d0ae-417c-881e-e2a9cbc4b9f1)
![after_fix_zoomed_small](https://github.com/user-attachments/assets/9c325995-fe0b-42f3-bdbb-6754f985e936)

After the change, the Charuco detector output aligns with the legacy chessboard detector both numerically and visually.

### Notes

This change only affects the post-refinement coordinate handling and does not alter detection logic, refinement parameters, or performance.

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
- [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-01-28 14:31:54 +03:00
Adrian Kretz 65e6890f33 Merge pull request #28386 from akretz:fix_issue_28385
Fix integer overflow in medianBlur #28386

The bug in #28385 is that the pointer arithmetic in
https://github.com/opencv/opencv/blob/d8bc5b94b851d5b392c61e5b954fba992e18bb73/modules/imgproc/src/median_blur.simd.hpp#L666-L668
overflows if `i*sstep` is larger than `INT_MAX`, because both variables are of type `int`. If one operand is of type `size_t` instead, the other operand gets promoted to `size_t` before multiplication and overflow doesn't happen anymore.

The test allocates 2.3GB for the Mat; I hope that's okay.

This PR fixes #28385

### 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
- [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-01-28 14:23:43 +03:00
Satge96 d1e12b9aa9 fix: mark distCoeffs, cameraMatrix as optional in calibrateCamera function 2026-01-28 11:14:29 +01:00
Alexander Smorkalov cf1177e87e Merge pull request #28467 from Sikandar1310291:fix/topk-layer-k-boundary-check-28445
Fix: TopK layer K boundary check allows K == input_dim (#28445)
2026-01-27 14:15:37 +03:00
Sikandar d8f8267700 Fix: TopK layer K boundary check allows K == input_dim (#28445)
The TopK layer was incorrectly rejecting K values equal to the input
dimension size. According to ONNX specification, K should be allowed
to equal the dimension size (to retrieve all elements).

Changed validation from 'K < input_shape[axis]' to 'K <= input_shape[axis]'

This fixes the error when loading YOLOv10 ONNX models that use TopK
with K equal to the dimension size.

Fixes #28445
2026-01-27 09:35:36 +05:00
Murat Raimbekov 774c7e01b3 Merge pull request #28301 from raimbekovm:fix-more-typos
docs: fix spelling errors in documentation and code #28301

- [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
- [ ] The feature is well documented and sample code can be built with the project CMake

### Description

Fixed multiple spelling errors across documentation, comments, and code:

- 'colummn' → 'column' (cublas.hpp, 3 occurrences)
- 'points_per_colum' → 'points_per_column' (calib3d.hpp, 3 occurrences)
- 'Asignee' → 'Assignee' (sift files, 2 occurrences)
- 'compability' → 'compatibility' (face.hpp, 2 occurrences)
- 'orignal' → 'original' (aruco_detector.cpp)
- 'refrence' → 'reference' (chessboard.cpp)
- 'indeces' → 'indices' (stitching.hpp)
- 'OutputPrecison' → 'OutputPrecision' (test)
- 'tranform' → 'transform' (slice_layer.cpp, 3 occurrences)

Total: 24 fixes across 14 files. Documentation and comment changes only, no functional impact.
2026-01-26 21:28:50 +03:00
Shrutikasri04 99dd085cd9 Merge pull request #28422 from Shrutikasri04:first-pr
docs(calib3d): fix grammar and clarify radial distortion formula in camera calibration tutorial #28422

This PR improves the camera calibration tutorial documentation by:

- Fixing minor grammatical issues for better readability.
- Clarifying the radial distortion model by explicitly defining r² = x² + y².

These changes do not affect functionality and are intended to make the mathematical explanation clearer for readers and new users.
2026-01-26 16:24:19 +03:00
Alexander Smorkalov a9f06448c8 Merge pull request #28457 from luisadame:patch-1
Fix setup usage example async syntax
2026-01-25 15:55:22 +03:00
Abhishek b93ea5412c Optimize duplicated computation in QR code error correction
Precompute X values in Forney algorithm to eliminate redundant gfPow calls.

Previously, gfPow(2, ...) was computed multiple times for the same error
location across different loop iterations, resulting in O(L²) redundant
Galois field arithmetic operations.

This change:
- Precomputes all X values once before the main loop
- Reduces complexity from O(L²) to O(L) for X value computations
- Removes the TODO comment at line 1642
- No functional changes, only performance improvement

The optimization is most beneficial when there are many error locations
in QR codes (larger L values).
2026-01-24 17:21:12 +00:00
pratham-mcw b229f1efd3 Merge pull request #28243 from pratham-mcw:cvfloor-neon-opt
core: add NEON support for cvFloor in fast_math.hpp #28243

- This PR adds NEON intrinsics-based implementation for the cvFloor function in fast_math.hpp for Windows-ARM64.
- Both float and double overloads now use NEON intrinsics for cvFloor Function.
- calchist and calchist1d function uses cvFloor function for its computations. 
- After adding these changes both functions showed improvement in performance.

**Performance Benchmarks:**
<img width="956" height="273" alt="image" src="https://github.com/user-attachments/assets/a00c98cd-d245-4d11-a9fd-361a3bd89f59" />

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
2026-01-24 13:42:16 +03:00
Alexander Smorkalov 1d20b65f1f Merge pull request #28401 from amd:fast_bilateral_level2
Optimized Bilateral Filter (32f) with AVX512
2026-01-24 13:40:08 +03:00
Luis Adame Rodríguez 8fbb871a9c fix setup usage example async syntax 2026-01-24 01:23:41 +01:00
Alexander Smorkalov 74addff3d0 Merge pull request #28303 from raimbekovm:fix-typos-batch4
docs: fix spelling errors in code and comments
2026-01-23 13:42:15 +03:00
Alexander Smorkalov 4cfd9689ae Merge pull request #28446 from Erellu:4.x
Fix UB in cv::error when breakOnError set to true
2026-01-23 11:29:33 +03:00
Alexander Smorkalov 5258bc5de9 Merge pull request #28317 from raimbekovm:fix-typos-batch7
docs: fix typos in documentation and code comments
2026-01-23 11:29:02 +03:00
Alexander Smorkalov f286b8d3cd Add color theme button to documentation. 2026-01-23 11:25:05 +03:00
Alexander Smorkalov 701da1686b Merge pull request #28439 from jinboson:loongarch64_itt
3rdparty(itt): support LOONGARCH64
2026-01-23 09:03:33 +03:00
Nechama Krashinski 1f47f5ba97 Merge pull request #28404 from NechamaKrashinski:imgproc-cornersubpix-error-handling
imgproc: replace assertion in cornerSubPix with descriptive error #28404

Replace CV_Assert with explicit bounds check for initial corners in cornerSubPix.

This provides a descriptive runtime error instead of abrupt termination,
improving error handling for Python and C++ users.

No algorithmic or behavioral change for valid inputs.

Fixes #25139 (Related to #7276).

### 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-01-22 16:13:21 +03:00
Erellu b201018a25 Fix UB in cv::error when breakOnError set to true
Fixes #28436.
Replaces a nullptr dereference (unguaranteed to cause a SEGFAULT) by `std::terminate` which will call the current `std::terminate_handler` and then SIGARBT.
2026-01-22 13:26:02 +01:00
Alexander Smorkalov fba658b9a1 Merge pull request #28381 from vrabaud:lsh
Improve precision of RotatedRect::points
2026-01-21 17:43:05 +03:00
Kumataro 97df136d32 Merge pull request #28441 from Kumataro:fix28440
Properly preserve KAZE/AKAZE license as mandated by BSD-3-Clause #28441

Close https://github.com/opencv/opencv/issues/28440

### 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-01-21 16:17:19 +03:00
jinbo 9c561eb703 3rdparty(itt): support LOONGARCH64
Fix warning generated by `cmake -S . -B build -DWITH_ITT=ON -DBUILD_ITT=ON`:
```
CMake Warning at cmake/OpenCVUtils.cmake:762 (message):
  Unexpected option: BUILD_ITT (=ON)

  Condition: IF
  ((;X86_64;OR;X86;OR;ARM;OR;AARCH64;OR;PPC64;OR;PPC64LE;);AND;NOT;WINRT;AND;NOT;APPLE_FRAMEWORK)
Call Stack (most recent call first):
  CMakeLists.txt:210 (OCV_OPTION)
```
2026-01-21 16:27:32 +08:00