如何有效地将大图像分成几个部分并旋转?

时间:2019-06-18 07:14:38

标签: python image numpy

给出一张大图,以下过程会花费很多时间:

1 将图像切成4个均匀形状的图像(在中间水平将图像分割一遍,在垂直方向将图像分割一遍):

enter image description here

2 按以下方式旋转4个部分: enter image description here

3 concat(因此可以将其作为神经网络的输入以一批4张图像的形式运行)

我尝试过的方法(图像是方形的:

image_A = image_np[: int(size / 2), :, :]
image_B = cv2.flip(image_np[int(size / 2):, :, :], -1)
image_C = cv2.rotate(image_np[:, :int(size / 2), :], cv2.ROTATE_90_CLOCKWISE)
image_D = cv2.rotate(image_np[:, int(size / 2):, :], cv2.ROTATE_90_COUNTERCLOCKWISE)

因此,我想知道是否有一种更快的方法,因为图像/部件是一个numpy数组。

1 个答案:

答案 0 :(得分:1)

我们可以通过数组切片简单地获取几乎免费的运行时视图,就像这样-

B = image_np[-1:int(size / 2)-1:-1, ::-1, :]
C = image_np[::-1, :int(size / 2),:].swapaxes(0,1)
D = image_np[:, -1:int(size / 2)-1:-1, :].swapaxes(0,1)

image_A = image_np[: int(size / 2), :, :]似乎已经是一种视图,因此无需对其进行任何更改。