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

2693 Commits

Author SHA1 Message Date
Alexander Smorkalov 1a74264ee9 Merge branch 4.x 2025-09-26 12:10:49 +03:00
Alexander Smorkalov 659106a99d Merge pull request #27817 from Kumataro:trial27793
core: verify length check when converting from vector to InputArray
2025-09-25 13:35:11 +03:00
Kumataro 6dbf7612f9 core: verify length check from vector to InputArray 2025-09-23 20:56:16 +09:00
Alexander Smorkalov ca7f668e6a Tunned Python bindings for logging. 2025-09-22 17:21:51 +03:00
Vadim Pisarevsky bdab54f79e Merge pull request #27757 from vpisarev:matshape_inside_mat
Use MatShape instead of MatSize inside cv::Mat/cv::UMat #27757

**Merge together with https://github.com/opencv/opencv_contrib/pull/3996**
---

This PR continues cv::Mat/cv::UMat refactoring. See #26056, where `MatShape` was introduced. Now it's put inside cv::Mat/cv::UMat instead of a weird `MatSize`. MatSize is now an alias for MatShape:

**before:**

```
struct MatShape { ... };
struct MatSize { ... };

struct Mat {
    ...
    int dims;
    int rows;
    int cols;

    ...

    MatShape shape() const { ... /* constructs MatShape out of MatSize and returns it;
                                    layout is always 'unknown', because we don't store it */ }

    MatSize size; // size is not valid without the parent cv::Mat,
                  // because size.p may point to Mat::rows or to Mat::cols,
                  // depending on the dimensionality, and dims() returns Mat::dims.
    MatStep step; // may allocate memory, depending on the dimensionality.
    ...
};
```

**after:**

```
struct MatShape { ... };
typedef MatShape MatSize; // they are now synonyms

struct Mat {
    ...
    int dims;
    int rows;
    int cols;

    ...

    MatShape shape() const { return size; } // just return the embedded shape (including the proper layout information)

    MatSize size; // size is self-contained data structure that can be used without the parent cv::Mat.
                  // size.dims is now a copy of dims; size.p[*] contains copies of Mat::rows and Mat::cols when dims <= 2.
    MatStep step; // does not allocate extra memory buffers.
    ...
};
```

There are several reasons to do that:

1. the main reason is to be able to store data layout (MatShape::layout) inside each cv::Mat/cv::UMat. This is necessary for the proper shape inference in DNN module. In particular, it's necessary for the next step of DNN inference optimization where we introduce block-layout-optimized convolution and other operations. Later on, we can use layout information to support non-interleaved images (e.g. RRR...GGG...BBB...) or even batches of such images in core/imgproc modules.
2. the other reason is to represent 3D/4D/5D etc. tensors as cv::Mat/cv::UMat instances more conveniently, without extra dynamic memory allocation. Before this patch we allocated some memory buffers dynamically to store shape & steps for more than 2D arrays. Now the whole cv::Mat/cv::UMat header can be stored completely on stack/in a container. Creating another copy of Mat/UMat header is now done more efficiently.
3. the third reason is to introduce the new coding pattern: `dst.create(src.size, <dst_type>);`. The pattern is suitable for most of element-wise (including cloning) and filtering operations. This pattern does not only look crisp and self-documenting, it will also automatically copy shape (including layout) from the source tensor into the destination matrix/tensor.
4. in the future we might add `colorspace` member to MatShape that will allow to distinguish RGB from BGR or NV12. `dst.create(src.size, <dst_type>);` will then copy the colorspace information as well.

### 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
2025-09-15 15:03:34 +03:00
Alexander Smorkalov cc1ddb5602 Merge branch 4.x 2025-09-10 10:46:54 +03:00
cudawarped ca35ed2f1c cuda: add compatibility layer for depreciated vector types 2025-09-01 13:25:50 +03:00
Alexander Smorkalov 6feee34c57 Merge branch 4.x 2025-07-30 16:04:47 +03:00
Alexander Smorkalov 8e20ec2f26 Merge pull request #27575 from pratham-mcw:arm64-cvround-fast-math
core: add ARM64 NEON support for cvRound in fast_math.hpp
2025-07-28 12:46:58 +03:00
pratham-mcw 6efca656b8 core: add ARM64 NEON support for cvRound in fast_math.hpp 2025-07-23 14:32:30 +05:30
Alexander Smorkalov bd67770dcb Merge branch 4.x 2025-07-22 09:47:19 +03:00
eplankin c48dad1d9d Merge pull request #27324 from eplankin:warp_hal_4x
* Moved IPP impl of warpAffine to HAL
Co-authored-by: victorget <victor.getmanskiy@intel.com>
2025-07-04 12:04:31 +03:00
Alexander Smorkalov d75323f8a5 Merge branch 'release_4.12.0' into 4.x 2025-07-02 15:46:12 +03:00
Alexander Smorkalov 49486f61fb release: OpenCV 4.12.0 2025-07-02 10:54:13 +03:00
xaos-cz 611d69aae1 filesystem support under Cygwin
add support for enabling filesystem under Cygwin environment
2025-06-26 14:45:19 +02:00
Maksim Shabunin 029030095c doc: added note to normalize function 2025-06-25 20:48:14 +03:00
Alexander Smorkalov e9f1da7e8e Merge pull request #27463 from asmorkalov:as/new_atomics
Switch to standard C11 atomics on android and with nvcc.
2025-06-25 15:11:08 +03:00
cudawarped 1950c4dbb9 Merge pull request #27379 from cudawarped:fix_cuda_convertTo
cuda: Fix GpuMat::convertTo issues described in 27373 #27379

Fix https://github.com/opencv/opencv/issues/27373.

1. `GpuMat::convertTo` uses `convertToScale` due to incorrect overload.
2. There are no runtime checks to prevent the use of `CV_16U` data types in Release builds.

### 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
2025-06-21 16:32:31 +03:00
Alexander Smorkalov 89289ecaa5 Switch to standard C11 atomics on android and with nvcc. 2025-06-20 12:38:11 +03:00
Alexander Smorkalov 7cb7a6fd20 pre: OpenCV 4.12.0 (version++). 2025-06-19 11:03:59 +03:00
Kumataro 1f674dcdb4 Merge pull request #27416 from Kumataro:fix27413
Close https://github.com/opencv/opencv/issues/27413

### 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
2025-06-12 15:32:28 +03:00
eplankin 287dad8102 Merge pull request #27354 from eplankin:ipp_update22.1
Update IPP integration #27354

Please merge together with https://github.com/opencv/opencv_3rdparty/pull/96
Supported IPP version was updated to IPP 2022.1.0 for Linux and Windows. Bugs in norm() function which caused failure of sanity check in performance tests were fixed, IPP calls were enabled.

Previous update: https://github.com/opencv/opencv/pull/26463
2025-06-12 15:23:49 +03:00
Alexander Smorkalov 350b211b57 Merge branch 4.x 2025-06-10 10:16:50 +03:00
Kavyansh Tyagi 7ca36d9c50 Merge pull request #27408 from KAVYANSHTYAGI:Umat-vector-contructor
Deprecate copyData Parameter in UMat Construction from std::vector and Always Copy Data #27408

Overview

This PR simplifies and modernizes the construction of cv::UMat from std::vector by removing the legacy copyData parameter, always copying the data, and ensuring clearer, safer semantics. This brings UMat in line with current best practices and paves the way for the upcoming OpenCV 5.x series.

What Changed?

1. Header Documentation Update

    Removed confusing or obsolete documentation about copyData and clarified the behavior:

        Old: builds matrix from std::vector with or without copying the data

        New: builds matrix from std::vector. The data is always copied. The copyData parameter is deprecated and will be removed in OpenCV 5.0.

2. Implementation Update

    In UMat::UMat(const std::vector<_Tp>& vec, bool copyData), the copyData parameter:

        Is now ignored and marked as deprecated.

        Marked with CV_UNUSED(copyData) for backward compatibility and to avoid warnings.

    The constructor always copies the data from the input vector, regardless of the value of copyData.

    All branching logic around copyData has been removed. Any code for "not copying" was not implemented and is now dropped.

    This guarantees data safety and predictable behavior.

3. Test Added

    A new test construct_from_vector in test_umat_from_vector.cpp:

        Verifies that UMat copies the vector data, not referencing it.

        Modifies the source vector after construction to confirm that the UMat is unaffected (proving copy, not reference).

        Checks matrix shape, type, and content to ensure correctness.

Why This Change?

1. Safety and Predictability

    Always copying avoids dangling references and hard-to-debug lifetime issues with stack/heap-allocated vectors.

    Removes an undocumented, unimplemented branch (copyData=false).

2. Backward Compatibility

    The constructor signature remains for now, but the copyData parameter is marked as deprecated and ignored.

    Codebases that pass the parameter will still compile and run as before (but always copy).

3. API Clarity and Maintenance

    Documentation now matches the real implementation.

    No misleading expectations about zero-copy.

    Code is cleaner, future-proof, and easier to maintain.

4. Preparation for OpenCV 5.0

    The copyData parameter is deprecated and will be removed in OpenCV 5.x.

    Prepares users and downstream libraries for the planned change.



How This Helps OpenCV Users and Developers

    Guarantees data safety and makes behavior explicit.

    Removes legacy/ambiguous code.

    Provides a clear path to OpenCV 5.x.

    Minimizes future migration pain.

    Ensures all users see the same, reliable behavior (copy semantics).


Refer:#27409
2025-06-09 16:02:38 +03:00
Maksim Shabunin e6fb6c290c core: legacy intrin operators - fixed version warning condition 2025-05-22 21:00:49 +03:00
Maxim Smolskiy d00738d97c Merge pull request #27331 from MaximSmolskiy:add-test-for-solveCubic
Add tests for solveCubic #27331

### Pull Request Readiness Checklist

Related to #27323 

I found only randomized tests with number of roots always equal to `1` or `3`, `x^3 = 0` and some simple test for Java and Swift.
Obviously, they don't cover all cases (implementation has strong branching and number of roots can be equal to `-1`, `0` and `2` additionally).
So, I think it will be useful to try explicitly cover more cases (and implementation branches correspondingly)

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
2025-05-21 08:36:35 +03:00
Maksim Shabunin a9b298eb47 Restored legacy intrinsics operators in a separate header 2025-05-17 16:44:07 +03:00
Alexander Smorkalov f3cffcd85d Merge pull request #27322 from vrabaud:zeros
Add missing Mat_<_Tp>::zeros(int _ndims, const int* _sizes)
2025-05-17 09:55:05 +03:00
Vincent Rabaud 1a624efc0f Add missing Mat_<_Tp>::zeros(int _ndims, const int* _sizes) 2025-05-16 10:50:15 +02:00
Alexander Smorkalov 736a73986b Merge pull request #27266 from fengyuentau:5x/loongson/build_fix
loongson/build: added v_gt and v_lt with lsx and lasx to fix build
2025-05-12 09:47:15 +03:00
Alexander Smorkalov f8de2e06e6 Merge branch 4.x 2025-05-07 13:17:42 +03:00
ruisv 9ab3a249c2 remove private.cuda.hpp:158 space 2025-05-07 11:46:43 +08:00
ruisv 8a2903c190 CUDA 12.9 support: build NppStreamContext manually 2025-05-06 23:47:12 +08:00
Kumataro 37be2a2a68 doc: hal: replace C++ operators with wrapper functions 2025-04-30 05:40:16 +09:00
OpenCV China ce1410e77c fix: added v_gt and v_lt with lsx and lasx to fix build 2025-04-29 16:39:02 +08:00
Alexander Smorkalov 91e078be93 Dropped inefficient (disabled) IPP integration for LUT. 2025-04-07 14:11:13 +03:00
Alexander Smorkalov 0b3155980a Merge pull request #25394 from Gao-HaoYuan:in_place_convertTo
Added reinterpret() method to Mat to convert meta-data without actual data conversion
2025-04-04 10:40:33 +03:00
Ryan Wong afc7c0a89c Merge pull request #27154 from kinchungwong:logging_callback_simple_c
User-defined logger callback, C-style. #27154

This is a competing PR, an alternative to #27140 

Both functions accept C-style pointer to static functions. Both functions allow restoring the OpenCV built-in implementation by passing in a nullptr.
- replaceWriteLogMessage
- replaceWriteLogMessageEx

This implementation is not compatible with C++ log handler objects.

This implementation has minimal thread safety, in the sense that the function pointer are stored and read atomically. But otherwise, the user-defined static functions must accept calls at all times, even after having been deregistered, because some log calls may have started before deregistering.

### 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
- [ ] 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
2025-03-30 16:17:07 +03:00
Liutong HAN 2969b67bd7 Fix 27003. 2025-03-12 12:15:05 +00:00
Alexander Smorkalov 4919cda8b2 Merge branch 4.x 2025-03-11 17:23:06 +03:00
Suleyman TURKMEN 656038346b Merge pull request #26441 from sturkmen72:upd_tutorials
Update tutorials #26441

### 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
2025-03-11 16:17:21 +03:00
GenshinImpactStarts 0fed1fa184 fix exp, log | enable ui for log | strengthen test
Co-authored-by: Liutong HAN <liutong2020@iscas.ac.cn>
2025-03-07 17:11:26 +00:00
Liutong HAN 97abffbdac Merge pull request #27006 from hanliutong:rvv-fix-ui-1024
Fix issues in RISC-V Vector (RVV) Universal Intrinsic #27006

This PR aims to make `opencv_test_core` pass on RVV, via following two parts:

1. Fix bug in Universal Intrinsic when VLEN >= 512:
- `max_nlanes` should be multiplied by 2, because we use LMUL=2 in RVV Universal Intrinsic since #26318.
- Related tests are also expanded to match longer registers
- Relax the precision threshold of `v_erf` to make the tests pass

2. Temporary fix  #26936
- Disable 3 Universal Intrinsic code blocks on GCC
- This is just a temporary fix until we figure out if it's our issue or GCC/something else's

This patch is tested under the following conditions:
- Compier: GCC 14.2, Clang 19.1.7
- Device: Muse-Pi (VLEN=256), QEMU (VLEN=512, 1024)


### 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
- [ ] 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
2025-03-04 16:49:59 +03:00
Alexander Smorkalov 1483504702 Merge branch 4.x 2025-02-20 13:58:04 +03:00
shyama7004 076bfa6431 Fix _DEBUG/NDEBUG handling across modules (#26151) 2025-02-11 22:00:44 +05:30
Alexander Smorkalov 55a2ca58f0 Merge branch 4.x 2025-02-05 09:28:27 +03:00
eplankin ae57c54d83 Merge pull request #26463 from eplankin:icv_update_2022.0.0
Update IPP integration #26463

Please merge together with https://github.com/opencv/opencv_3rdparty/pull/88
Supported IPP version was updated to IPP 2022.0.0 for Linux and Windows. 32-bit binaries are dropped since this release.

Previous update: https://github.com/opencv/opencv/pull/25935
2025-01-27 17:02:36 +03:00
Alexander Smorkalov 33da8763a5 Merge pull request #26717 from s-trinh:add_border_type_doc_examples
Add examples for each `cv::BorderTypes` enum types in the documentation
2025-01-27 14:02:38 +03:00
Maksim Shabunin 63ef786a3a core: fixed VSX build with GCC 15 2025-01-16 23:48:29 +03:00
FantasqueX 162179748a Merge pull request #26651 from FantasqueX:remove-msvs-2013
Remove MSVS 2013 related #26651

OpenCV 5.x requires MSVC >= 2017 15.7 and MSVS 2013 is EOF currently.

### 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
2025-01-11 19:14:34 +03:00