Я пытаюсь перевести изображение, используя следующий код.
im = io.imread("path/to/my/image.jpg")
shift_image = scipy.ndimage.shift(im, np.array([1, 2]))
Я использую skimage
для чтения образа.
Я получаю следующую ошибку
RuntimeError: sequence argument must have length equal to input rank
Да, это оказалось ошибкой! Я думал, что, поскольку пакет называется ndimage
, он применит сдвиг для всех каналов.
Название ndimage
(с «n-мерным» в нем) предполагает, что пакет не предполагает, что изображения являются двухмерными, и что любое другое измерение означает что-то еще. В конце концов, 3D-изображения (МРТ) - это вещь. Фактически, он работает с абстрактным n-мерным массивом. Для двумерного изображения RGB форма имеет вид (height, width, 3)
из-за трех цветовых каналов. Таким образом, сдвиг будет [1, 2, 0]
.
Что такое
im.shape
? Если это изображение RGB, есть третье измерение для канала.