У меня есть кадр с размерами 640x512
, который хранится в виде массива Numpy со всеми белыми пикселями.Я хочу постоянно удалять / pop (0) самый левый столбец и добавлять его с черным столбцом в каждой итерации.По сути, я пытаюсь сместить изображение справа налево, чтобы в конечном итоге заменить все изображение черными пикселями, по одному столбцу за раз.Я пытался использовать np.concatenate()
, но продолжаю получать эти две ошибки.
ValueError: все входные массивы должны иметь одинаковое количество измерений
ValueError: не может транслировать вводмассив из формы (512,1) в форму (640)
Если возможно, я бы хотел сделать это на месте.Вот иллюстрация.
Начальный пустой кадр размером 640x512
![image](https://i.stack.imgur.com/sxBsY.png)
Каждая итерация добавляет новый черный столбец (1 пиксель) к кадру сконечный результат с полностью черным изображением
![enter image description here](https://i.stack.imgur.com/dfzWB.png)
Это действие всплывающего / толкающего типа похоже на очередь, но вместо этого я хочу сделать это непосредственно на 2D Numpyмассивы.Я не хочу использовать какую-либо другую структуру данных, поскольку я помещаю эти изображения непосредственно в OpenCV, поэтому я хотел бы сохранить ее в виде массива Numpy.Как я могу сдвинуть двумерный массив с пупырышками по одному пикселю за раз?
import numpy as np
import cv2
black_column = np.zeros([512,1], dtype=np.uint8)
blank_pixels = np.zeros([512, 640], dtype=np.uint8)
blank_pixels[:] = 255
while True:
# Pop
blank_pixels[:-1] = blank_pixels[1:]
# Push
blank_pixels[-1] = black_column
#blank_pixels[:] = np.concatenate(blank_pixels[1:], black_column)
cv2.imshow('blank_pixels', blank_pixels)
cv2.waitKey(1)