|
import numpy as np |
|
|
|
|
|
|
|
def center_crop(img: np.ndarray, crop_height: int, crop_width: int): |
|
height, width = img.shape[:2] |
|
if height < crop_height or width < crop_width: |
|
raise ValueError( |
|
"Requested crop size ({crop_height}, {crop_width}) is " |
|
"larger than the image size ({height}, {width})".format( |
|
crop_height=crop_height, crop_width=crop_width, height=height, width=width |
|
) |
|
) |
|
x1, y1, x2, y2 = get_center_crop_coords(height, width, crop_height, crop_width) |
|
img = img[y1:y2, x1:x2] |
|
return img |
|
|
|
|
|
def get_center_crop_coords(height: int, width: int, crop_height: int, crop_width: int): |
|
y1 = (height - crop_height) // 2 |
|
y2 = y1 + crop_height |
|
x1 = (width - crop_width) // 2 |
|
x2 = x1 + crop_width |
|
return x1, y1, x2, y2 |
|
|