Операции с массивами для увеличения изображения Python cv2 с использованием numpy - PullRequest
2 голосов
/ 03 февраля 2020

Учитывая, что X является Numpy Array X.shape = (1, 96, 96, 3), в основном изображение, считанное из CV2. Я ищу более простую формулировку операции дополнения.

Не могли бы вы объяснить, что делает следующие строки кода

b=X[:, ::-1, :, :]
c=X[:, ::-1, ::-1, :]
d=X[:, :, ::-1, :]

1 Ответ

2 голосов
/ 03 февраля 2020

X[::-1] применяется индексация: индексы X от первого до последнего с шагом -1.

  • b=X[:, ::-1, :, :] - Перевернуть изображение вверх / вниз.
  • c=X[:, ::-1, ::-1, :] - Перевернуть изображение вверх / вниз и влево / вправо.
  • d=X[:, :, ::-1, :] - обратное изображение влево / вправо.

Примечание:
:: не является оператором, на самом деле это два : оператора один за другим.
X[::-1] совпадает с X[ : : -1] .
См. Документацию Indexing .

Синтаксис основного среза c: i: j: k, где i - начальный индекс, j - индекс остановки, а k - шаг.

Если i не задано, по умолчанию оно равно 0

Если j не задано, по умолчанию n

Запись [: : -1], пропускается i и j и устанавливает k в -1.
Синтаксис означает: «из индекса 0, взять все элементы с шагом -1», что дает всем элементам в reverse порядок (все элементы вдоль этой оси).


Пример:

import cv2
import numpy as np

# Build input:
im = cv2.imread('chelsea.png')
im = cv2.resize(im, (96, 96))
X = np.empty((1, im.shape[0], im.shape[1], im.shape[2])).astype(np.uint8)
X[0, :, :, :] = im

b = X[:, ::-1, :, :]
c = X[:, ::-1, ::-1, :]
d = X[:, :, ::-1, :]

Результат:

im:
enter image description here

b:
enter image description here

c:
enter image description here

d:
enter image description here


Примечание:
Я как бы проигнорировал индекс кулака, потому что размер равен 1.
В случае нескольких кадров, это обычно для кулака Индекс для применения количества кадров.

...