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

36212 Commits

Author SHA1 Message Date
Rostislav Vasilikhin 9d232fe7f2 Merge pull request #27801 from savuor:rv/fix_hashtsdf_expand
Fixed HashTSDF expand bug #27801

HashTSDF should expand volume units during integration. It didn't happen in fact because of wrong Mat passing.

### 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-22 08:36:13 +03:00
Alexander Smorkalov 83b7a0caf7 Merge pull request #27794 from asmorkalov:as/multiview_calib_logging
Added info logs with intermediate values to multiview calibration and related script option
2025-09-19 13:43:49 +03:00
Abhishek Gola d79e95c018 Merge pull request #27674 from abhishek-gola:nonmaxsuppression_layer_add
Added nonmaxsuppression (NMS) layer to new DNN engine #27674

### 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-19 12:55:37 +03:00
Alexander Smorkalov 6a9aa0aba2 Added info logs with intermediate values to multiview calibration and related script option. 2025-09-19 12:27:17 +03:00
Alexander Smorkalov 07b7dd02cd Merge pull request #27792 from asmorkalov:as/multiview_stereo_init
Added option to initialize pairs with stereo and fixed related bugs.
2025-09-19 12:22:37 +03:00
Alexander Smorkalov b6eff512c8 Merge pull request #27800 from asmorkalov:as/multiview_visualize_camid
Fixed cameras name loading in multiview camera visualization.
2025-09-19 08:59:27 +03:00
Alexander Smorkalov 619f47d78a Fixed cameras name loading in multiview camera visualization. 2025-09-18 21:20:42 +03:00
Abhishek Gola 68a5aea843 Merge pull request #27586 from abhishek-gola:resize_layer_add
Added fully functional resize layer to new DNN engine #27586

### 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-18 09:17:04 +03:00
Alexander Smorkalov 96c2365d5f Added option to initialize pairs with stereo and fixed related bugs. 2025-09-17 18:59:43 +03:00
Alexander Smorkalov 5185dfbaee Merge pull request #27791 from asmorkalov:as/multiview_term_criteria
Add term criteria to multivew calibration
2025-09-17 18:55:07 +03:00
Alexander Smorkalov f3f9e70fe0 Merge pull request #27790 from asmorkalov:as/multview_calib_no_flip
Use clustering for findCirclesGrid in multiview calibration to get rid of pattern flip
2025-09-17 17:19:22 +03:00
Alexander Smorkalov aa0d486988 Add term criteria to multivew calibration 2025-09-17 16:37:03 +03:00
Abhishek Gola cd4f2c2561 Merge pull request #27676 from abhishek-gola:unique_layer_add
Added unique layer to new DNN engine #27676

### 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-17 16:04:52 +03:00
Alexander Smorkalov 0b9ef2f2be Merge pull request #27788 from savuor:rv/fix_loadmesh_outputarray
Fixed mesh loading when indices are not in std::vector
2025-09-17 15:07:01 +03:00
Alexander Smorkalov 16bb0600bd Use clustering for findCirclesGrid in multiview calibration to get rid of pattern flip. 2025-09-17 10:47:25 +03:00
Rostislav Vasilikhin 58a25ede74 fixed mesh loading when indices is not an std::vector 2025-09-16 22:04:08 +02:00
Alexander Smorkalov 57b813eaad Merge pull request #27786 from asmorkalov:as/dump_percamera_rms
Dump per-camera RMS for multiview calibration.
2025-09-15 19:06:39 +03:00
Alexander Smorkalov 8a039b4586 Dump per-camera RMS for multiview calibration. 2025-09-15 15:47:48 +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 abcfb3c1e7 Merge pull request #27780 from asmorkalov:as/minMax_test_fix_5.x
Out of buffer access fix in the new 5.x tests.
2025-09-12 20:04:49 +03:00
Alexander Smorkalov 59c87f3206 Out of buffer access fix in the new 5.x tests. 2025-09-12 18:14:34 +03:00
Abhishek Gola 105a3c335b Merge pull request #27701 from abhishek-gola:nonzero_layer_add
Added nonzero layer to new DNN engine #27701

### 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-12 08:51:20 +03:00
Alexander Smorkalov cc1ddb5602 Merge branch 4.x 2025-09-10 10:46:54 +03:00
Alexander Smorkalov ec015d48d6 Merge pull request #27764 from cudawarped:fix_windows_ffmpeg_preprocessor_compilation_issue
[videoio][ffmpeg] Fix Windows build error
2025-09-10 09:14:49 +03:00
Alexander Smorkalov 307442b30b Merge pull request #27762 from KAVYANSHTYAGI:typo-fixes
Fix typos in Einsum layer and G-API docs
2025-09-10 08:39:57 +03:00
cudawarped 08b84558a2 Move preprocessor directives outside of macro to avoid the following error when compiling with MSVC
D:\repos\opencv\opencv\modules\videoio\src\cap_ffmpeg_impl.hpp(1727): error C2121: '#': invalid character: possibly the result of a macro expansion
D:\repos\opencv\opencv\modules\videoio\src\cap_ffmpeg_impl.hpp(1727): error C2143: syntax error: missing ';' before 'if'
D:\repos\opencv\opencv\modules\videoio\src\cap_ffmpeg_impl.hpp(1727): error C2059: syntax error: '>='
2025-09-10 08:00:41 +03:00
Abhishek Gola 83b771f379 Merge pull request #27710 from abhishek-gola:pow_layer_add
Added Pow layer to new DNN engine #27710

### 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-09 22:16:08 +03:00
Alexander Smorkalov 8562b15924 Merge pull request #27761 from dkurt:python_without_3d
Optional 3D module dependency in Python
2025-09-09 22:12:43 +03:00
Alexander Smorkalov b3f6c86d47 Merge pull request #27760 from asmorkalov:as/drop_avresample
Remove libavresample from CMake as it's not used in code.
2025-09-09 22:11:12 +03:00
Kavyansh Tyagi eed87abbcf Fix typos in Einsum layer and G-API docs 2025-09-09 23:21:14 +05:30
Dmitry Kurtaev 2d85996182 Optional 3D module dependency in Python 2025-09-09 19:04:47 +03:00
Alexander Smorkalov ae86b400cc Remove libavresample from CMake as it's not used in code. 2025-09-09 16:13:43 +03:00
Alexander Smorkalov efea09120b Merge pull request #27734 from cudawarped:cuda_double4_dep
[cuda] Add compatibility layer for vector types due for depreciation in CUDA 14.0
2025-09-09 14:49:48 +03:00
Alexander Smorkalov 3a21ed56e3 Merge pull request #27738 from arrzhev:fix_memoryleak_pybindings
Fix memory leaks in pybindings
2025-09-09 14:46:50 +03:00
Abhishek Gola f67ae273b3 Merge pull request #27700 from abhishek-gola:gridsample_layer_add
Added gridsample layer to new DNN engine #27700

### 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-09 14:45:13 +03:00
Dmitry Kurtaev 8e0c0dc347 Merge pull request #27755 from dkurt:ffmpeg/sws_scale_frame
Optimize FFmpeg VideoCapture with swscale threads option #27755

### Pull Request Readiness Checklist

resolves https://github.com/opencv/opencv/issues/21969

* Switch to `sws_scale_from` for `libswscale >= 6.4.100` (FFmpeg >= 5.0)
* Use new context init API with threads option (`libswscale >= 8.12.100`: https://github.com/FFmpeg/FFmpeg/commit/2a091d4f2ee1e367d05a6bbbe96b204257cbda87)
* Replicate `sws_getCachedContext` with threads option for `libswscale < 8.12.100`

1 hour mp4 video every frame reading
| HW | sws_scale | sws_scale_frame + 16 threads | sws_scale_frame + 24 threads (#cpus) | 
|---|---|---|---|
| Intel Core i9-12900 CPU | 45.1 sec | 25.4 sec (x1.77) | 30 sec (x1.50) | 
| NVIDIA GPU 4090 | 232 sec | 89.4 sec (x2.59) | 77 sec (x3.01) |

```
import time
import numpy as np
import os
import cv2 as cv

# os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "hwaccel;cuvid|video_codec;h264_cuvid|vsync;0"

start = time.time()
video = "test.mp4"
cap = cv.VideoCapture(video, cv.CAP_FFMPEG)
while True:
    has_frame, frame = cap.read()
    if not has_frame:
        break

print(time.time() - start)
```

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-09 14:21:18 +03:00
Alexander Smorkalov 646e94aad4 Merge pull request #27759 from uilianries:docs/update-conan-url
[docs] Update Conan URL to use official Conan Center
2025-09-09 12:10:07 +03:00
Uilian Ries 7e3550dff8 Update Conan URL to use official Conan Center
Signed-off-by: Uilian Ries <uilianries@gmail.com>
2025-09-09 09:53:08 +02:00
Alexander Smorkalov d1a5723864 Merge branch 4.x 2025-09-09 10:27:19 +03:00
Kumataro 9196edd299 Merge pull request #27559 from Kumataro:fix27555
imgcodecs: bmp: support to write 32bpp BMP with BI_BITFIELDS #27559

### 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.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-09-09 09:23:43 +03:00
Alexander Smorkalov ee41f46b46 Merge pull request #27758 from asmorkalov:as/stitching_false_overload
Renamed templated BlocksCompensator::feed method to exclude claches with base class pure virtual method
2025-09-08 18:19:10 +03:00
Nadezhda Mizonova 9663b582a2 Merge pull request #27720 from nmizonov:fix_ipp_bilateral_tiling
Set limitation to IPP Bilateral Filter tiles number to avoid too small tiles #27720

### Pull Request Readiness Checklist

This PR fixes the following issue in Bilateral Filter tiling in IPP integration: image ROI can't be closer to the image border than the filter window radius. This issue shows itself during separation of the image to tiles for multithreaded processing. If the tile size small enough, the second tile is closer to the upper image border than the bilateral filter radius, which leads to the incorrect result. To fix this, we need a limitation to the tile size - done in this PR.

_Note: red build status looks like unrelated to the current change_

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-09-08 16:11:20 +03:00
Alexander Smorkalov b28d9bef1d Renamed templated BlocksCompensator::feed method to exclude claches with base class pure virtual method. 2025-09-08 14:52:58 +03:00
cudawarped 54b03cc2f8 Merge pull request #27737 from cudawarped:fix_videowriter_raw_return_code
[videoio][VideoWriter] Fix return code from CvVideoWriter_FFMPEG::writeFrame() when encapsulating encoded video #27737

Currently the return code from `CvVideoWriter_FFMPEG::writeFrame()` when `encode_video==true` (encapsulating raw encoded video) is wrong and results in the following warning implying it has been unsuccessful

> [ WARN:0@15.551] global cap_ffmpeg.cpp:198 write FFmpeg: Failed to write frame

### 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-09-08 12:34:49 +03:00
Alexander Smorkalov 2352436a61 Merge pull request #27735 from cudawarped:cuda_silence_wd4505
[cuda] Silence unreferenced function with internal linkage has been removed warnings in Windows
2025-09-08 11:03:04 +03:00
Kumataro 98a70539cc Merge pull request #27730 from Kumataro:fix27729
doc: fix doxygen warnings for imgcodecs, flann and objdetect #27730

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

### 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-09-08 10:35:01 +03:00
Alexander Smorkalov b52feed94d Merge pull request #27728 from MaximSmolskiy:remove_useless_variables_from_fitEllipse_tests
Remove useless variables from fitEllipse tests
2025-09-08 09:51:49 +03:00
Alexander Smorkalov 3d3e962652 Merge pull request #27745 from nina16448:fix_1
Fix typos in documentation
2025-09-08 09:51:05 +03:00
Dmitry Kurtaev 65cb3fd86c Merge pull request #27741 from dkurt:libpng_1.6.45
libpng upgrade to 1.6.45 and cICP metadata support for PNG imwrite #27741

### Pull Request Readiness Checklist

resolves #24185

libpng docs: https://www.w3.org/TR/png-3/#cICP-chunk
similar code from ffmpeg: https://github.com/FFmpeg/FFmpeg/blob/a700f0f72d1f073e5adcfbb16f4633850b0ef51c/libavcodec/pngenc.c#L452-L456

So issue #24185 can be solved by replacing `cv.imwrite` in user's code to `cv.imwriteWithMetadata`:
```python
cv.imwriteWithMetadata("frame.png", frame, [cv.IMAGE_METADATA_CICP], np.array([[9, 18, 0, 1]], np.uint8))
```
```
$ exiftool /home/d.kurtaev/opencv_build/frames_pr/image_38.png
ExifTool Version Number         : 12.76
File Name                       : image_38.png
Directory                       : /home/d.kurtaev/opencv_build/frames_pr
File Size                       : 3.8 MB
File Modification Date/Time     : 2025:09:02 20:48:22+03:00
File Access Date/Time           : 2025:09:02 20:48:22+03:00
File Inode Change Date/Time     : 2025:09:02 20:48:22+03:00
File Permissions                : -rw-r--r--
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 1080
Image Height                    : 1920
Bit Depth                       : 8
Color Type                      : RGB
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Color Primaries                 : BT.2020, BT.2100
Transfer Characteristics        : BT.2100 HLG, ARIB STD-B67
Matrix Coefficients             : Identity matrix
Video Full Range Flag           : 1
Image Size                      : 1080x1920
Megapixels                      : 2.1
```

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.
- [x] The feature is well documented and sample code can be built with the project CMake
2025-09-08 09:49:26 +03:00
Alexander Smorkalov e22c1065ec Merge pull request #27742 from asmorkalov:as/clang21
Build fix for Clang 21.
2025-09-08 08:57:57 +03:00