Эффективно переворачивать / транспонировать изображение вдоль y = x - PullRequest
0 голосов
/ 17 октября 2018

Я хочу перевернуть изображение вдоль оси Y = X, как это.

Original

Flipped

Я сделал эту функцию, чтобы делать то, что я хочу, но мне было интересно, есть ли более оптимизированный способ сделать это.Функция, которую я сделал, немного медленная при работе с большими изображениями

def flipImage(img):
    # Get image dimensions
    h, w = img.shape[:2]
    # Create a image
    imgYX = np.zeros((w, h, 3), np.uint8)
    for y in range(w):
        for x in range(h):
            imgYX[y,x,:]=img[x,y,:] #Flip pixels along y=x
    return imgYX

1 Ответ

0 голосов
/ 17 октября 2018

Просто swap the first two axes, которые соответствуют высоте и ширине -

img.swapaxes(0,1) # or np.swapaxes(img,0,1)

Мы также можем переставлять оси с transpose -

img.transpose(1,0,2) # or np.transpose(img,(1,0,2))

Мы также можем roll axes для того же эффекта -

np.rollaxis(img,0,-1)

We use the same trick when working with images in MATLAB.

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