Для лучшей визуализации я пропускаю всю часть изменения размера , которую вы получили ранее , и придерживаюсь изображений с измененным размером (250 x 250)
.
Мой подход заключается в следующем: сохранить все изображения с измененным размеромв некотором массиве NumPy с размерами (width x height x numberOfChannels x numberOfImages)
, а затем используйте NumPy's max
вдоль axis=3
, так что вы получите окончательное изображение (width x height x numberOfChannels)
с максимальными значениями BGR (или оттенками серого, если необходимо) в течениевсе изображения.
Вот примерный код:
import cv2
import numpy as np
# Set up empty images array
width, height, nChannels, nImages = (250, 250, 3, 3)
images = np.zeros((width, height, nChannels, nImages), np.uint8)
# Read and resize exemplary input images
images[:, :, :, 0] = cv2.resize(cv2.imread('WeQow.png'), (width, height))
images[:, :, :, 1] = cv2.resize(cv2.imread('gIHOd.png'), (width, height))
images[:, :, :, 2] = cv2.resize(cv2.imread('lAdfO.jpg'), (width, height))
# Generate maximum image along last axis, i.e. the images.
# For each BGR value you get the maximum over all images.
image = images.max(axis=3)
# Show images
cv2.imshow('image0', images[:, :, :, 0])
cv2.imshow('image1', images[:, :, :, 1])
cv2.imshow('image2', images[:, :, :, 2])
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Это три входных изображения:
Окончательное изображение будет выглядеть следующим образом:
Надеюсь, это поможет!