Я не эксперт по Numpy и тому, как называются его операции, но я могу показать вам, как использовать различные методы нарезки (индексации?) Для некоторой обработки изображений.
В целом, на изображениях RGB,операции разделены запятыми и выглядят так:
newImage = oldImage[ROWSTUFF, COLUMNSTUFF, CHANNELSTUFF]
, где ROWSTUFF, COLUMNSTUFF и CHANNELSTUFF состоят из:
start:end:step
Итак, давайте немного обработаем это изображение:
# Load image with PIL/Pillow and make Numpy array - you can equally use OpenCV imread(), or other libraries
im = np.array(Image.open('start.png').convert('RGB'))
# im.shape is (400, 400, 3)
# Now extract top half by ending ROWSTUFF at 200
tophalf = im[:200,:,:]
# Now extract bottom half by starting ROWSTUFF at 200
bottomhalf = im[200:,:,:]
# Now extract left half by ending ROWSTUFF at 200
lefthalf = im[:,:200,:]
# Now extract right half by starting ROWSTUFF at 200
righthalf = im[:,200:,:]
# Now scale the image by taking only every 4th row and every second column:
scaled = im[::4,::2,:]
# Now extract Red channel, by setting CHANNELSTUFF to 0
red = im[:,:,0]
# Now extract Green channel, by setting CHANNELSTUFF to 1
green = im[:,:,1]
# Now flop the image top to bottom by striding backwards through ROWSTUFF
flop = im[::-1,:,:]
# Now flip the image left to right by striding backwards through COLUMNSTUFF
flip = im[:,::-1,:]
# And finally, like the question, reverse the channels by striding through CHANNELSTUFF backwards, which will make RGB -> BGR, thereby leaving Green and black unchanged
OP = im[:,:,::-1]
А затем просто поймите, что ...
- это сокращение для "оставив неуказанным ди"1010 *, поэтому
[:,:,:,:, a:b:c] can be written as [..., a:b:c]
и
[a:b:c, :,:,:,:,:] can be written as [a:b:c, ...]
Ключевые слова : обработка изображений, обработка изображений, Python, Numpy, flip,флоп, реверс, шаг, начало, конец, диапазон, срез, срез, извлечение, масштаб, канал, реверс, BGR в RGB, RGB в BGR.