imgutils.operate.squeeze

Overview:

A utility for squeezing a specified region of an image.

squeeze

imgutils.operate.squeeze.squeeze(image: str | PathLike | bytes | bytearray | BinaryIO | Image, mask: ndarray)[source]

Extracts the corresponding region from the original image based on the provided mask (HxW format) and crops the image to fit the mask tightly.

Parameters:
  • image (ImageTyping) – The input image.

  • mask (np.ndarray) – The mask representing the region of interest. It should be a NumPy array with shape (H, W).

Raises:

ValueError – If the shape of the image and mask do not match.

Returns:

The cropped image that fits the mask tightly.

Return type:

Image.Image

Examples::
>>> from PIL import Image
>>> from imgutils.operate import squeeze
>>>
>>> origin = Image.open('jerry_with_space.png')
>>> mask = ...  # set your custom mask, format: bool[H, W]
>>>
>>> squeezed = squeeze(origin, mask)

This is the result:

../../_images/squeeze.plot.py.svg

squeeze_with_transparency

imgutils.operate.squeeze.squeeze_with_transparency(image: str | PathLike | bytes | bytearray | BinaryIO | Image, threshold: float = 0.7, median_filter: int | None = 5)[source]

Automatically crops the image based on the transparency of each pixel using the squeeze() function.

Parameters:
  • image (ImageTyping) – The input image.

  • threshold (float) – The threshold value for pixel transparency. Pixels with transparency above this threshold will be considered as part of the region of interest. Default is 0.7.

  • median_filter (Optional[int]) – The size of the median filter kernel to apply to the transparency mask. A larger value helps reduce noise in the mask. Set to None or 0 to disable median filtering. Default is 5.

Returns:

The cropped image based on the transparency of each pixel.

Return type:

Image.Image

Examples::
>>> from PIL import Image
>>> from imgutils.operate import squeeze_with_transparency
>>>
>>> origin = Image.open('jerry_with_space.png')
>>>
>>> squeezed = squeeze_with_transparency(origin)

This is the result:

../../_images/squeeze_with_transparency.plot.py.svg