Как эффективно разделить большое изображение на несколько частей и вращать их? - PullRequest
1 голос
/ 18 июня 2019

Учитывая большую картину, следующее занимает много времени:

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)

Так что мне было интересно, есть ли более быстрый путь, учитывая, что изображение / деталь является массивом.

1 Ответ

1 голос
/ 18 июня 2019

Мы могли бы просто получить представления для практически бесплатной среды выполнения с нарезкой массива, например так:

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), :, :] уже выглядит как представление, поэтому никаких изменений для этого не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...