cutcutcodec.core.filter.video.patch.patch¶
- cutcutcodec.core.filter.video.patch.patch(image: FrameVideo | Tensor | ndarray, anchor: tuple[Integral, Integral] | list[Integral], shape: tuple[Integral, Integral] | list[Integral], copy: bool = True) FrameVideo | Tensor | ndarray[source]¶
Extract part of the image seen through a window.
If the window protrudes from the image, it is padded with transparent layer.
Parameters¶
- imagecutcutcodec.core.classes.image_video.FrameVideo or torch.Tensor or numpy.ndarray
The image to be patch. If a numpy array is provide, the format has to match with the video image specifications.
- anchorint and int
The position of the top left corner of the window. The convention adopted is the numpy convention (height, width).
- shapeint and int
The pixel dimensions of the returned image. The convention adopted is the numpy convention (height, width).
- copyboolean, default=True
If True, ensure that the returned tensor doesn’t share the data of the input tensor.
Returns¶
- patched_image
The patched view image homogeneous with the input.
Examples¶
>>> import torch >>> from cutcutcodec.core.classes.frame_video import FrameVideo >>> from cutcutcodec.core.filter.video.patch import patch >>> ref = FrameVideo(0, torch.full((4, 8, 1), 0.5)) >>> patch(ref, (-2, -2), (7, 11))[..., 1] # alpha layer tensor([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 0.], [0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 0.], [0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 0.], [0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 0.], [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) >>> patch(ref, (1, 1), (2, 6)).convert(1)[..., 0] # as gray tensor([[0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000], [0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000]]) >>> patch(ref, (-1, -2), (4, 8)).convert(1)[..., 0] # as gray tensor([[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000], [0.0000, 0.0000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000], [0.0000, 0.0000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000], [0.0000, 0.0000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000]]) >>> patch(ref, (1, 2), (4, 8)).convert(1)[..., 0] # as gray tensor([[0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.0000, 0.0000], [0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.0000, 0.0000], [0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, 0.0000, 0.0000], [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]]) >>> patch(ref, (-2, -2), (4, 2)).convert(1)[..., 0] # as gray tensor([[0., 0.], [0., 0.], [0., 0.], [0., 0.]]) >>> patch(ref, (-2, 6), (2, 4)).convert(1)[..., 0] # as gray tensor([[0., 0., 0., 0.], [0., 0., 0., 0.]]) >>>