opencv/modules/python
Vadim Levin 0c5d74ec1a
Merge pull request #24066 from VadimLevin:dev/vlevin/python-typing-register-dnn-layer
Python typing refinement for dnn_registerLayer/dnn_unregisterLayer functions #24066

This patch introduces typings generation for `dnn_registerLayer`/`dnn_unregisterLayer` manually defined in [`cv2/modules/dnn/misc/python/pyopencv_dnn.hpp`](https://github.com/opencv/opencv/blob/4.x/modules/dnn/misc/python/pyopencv_dnn.hpp)

Updates:

- Add `LayerProtocol` to `cv2/dnn/__init__.pyi`:

    ```python
    class LayerProtocol(Protocol):
        def __init__(
            self, params: dict[str, DictValue],
            blobs: typing.Sequence[cv2.typing.MatLike]
        ) -> None: ...

        def getMemoryShapes(
            self, inputs: typing.Sequence[typing.Sequence[int]]
        ) -> typing.Sequence[typing.Sequence[int]]: ...

        def forward(
            self, inputs: typing.Sequence[cv2.typing.MatLike]
        ) -> typing.Sequence[cv2.typing.MatLike]: ...
    ```

- Add `dnn_registerLayer` function to `cv2/__init__.pyi`:

    ```python
    def dnn_registerLayer(layerTypeName: str,
                          layerClass: typing.Type[LayerProtocol]) -> None: ...
    ```

- Add `dnn_unregisterLayer` function to `cv2/__init__.pyi`:

    ```python
    def dnn_unregisterLayer(layerTypeName: str) -> None: ...
    ```
### 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.
- [x] The feature is well documented and sample code can be built with the project CMake
2023-07-27 11:28:00 +03:00
..
bindings Merge pull request #20370 from ddacw:stub-gen-next 2023-05-26 18:25:46 +03:00
package pre: OpenCV 4.8.0 (version++) 2023-06-20 15:52:57 +03:00
python2 python: support standalone Python bindings build 2018-06-07 15:16:39 +03:00
python3 cmake: update installation of python extra submodules 2021-10-15 14:21:31 +00:00
src2 Merge pull request #24066 from VadimLevin:dev/vlevin/python-typing-register-dnn-layer 2023-07-27 11:28:00 +03:00
test fix: preserve NumPY writeable flag in output arguments 2023-07-19 17:22:10 +03:00
CMakeLists.txt Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2022-08-14 15:50:42 +00:00
common.cmake Merge pull request #20370 from ddacw:stub-gen-next 2023-05-26 18:25:46 +03:00
python_loader.cmake Merge pull request #20370 from ddacw:stub-gen-next 2023-05-26 18:25:46 +03:00
standalone.cmake python: update CMake install rules 2019-03-15 13:11:00 +03:00