Solución:
Cuando las imágenes se leen en la API Python de OpenCV, obtienes matrices Numpy. Numpy tiene vstack()
y hstack()
funciones, que puede utilizar para apilar matrices (imágenes) vertical y horizontalmente.
Abramos dos imágenes con OpenCV:
import cv2
import numpy as np
knight = cv2.imread('knight.jpg', cv2.IMREAD_GRAYSCALE)
Para usar el apilamiento en numpy, hay restricciones en las dimensiones de la imagen según el eje de apilado (vertical / horizontal), por lo que para esta imagen, usaré cv2.resize()
para conseguir las dimensiones correctas
queen = cv2.imread('queen.jpg', cv2.IMREAD_GRAYSCALE)
queen = cv2.resize(queen, (525, 700))
Hagamos una primera columna apilando 2 Caballeros
col_1 = np.vstack([knight, knight]) # Simply put the images in the list
# I've put 2 knights as example
Ahora hagamos una segunda columna con 2 reinas.
col_2 = np.vstack([queen, queen])
Juntemos esas dos columnas, pero esta vez usaremos hstack()
para eso
collage = np.hstack([col_1, col_2]
Et voila, un collage de 2 x 2 que puedes adaptar a tus necesidades. Tenga en cuenta que las imágenes pasadas en el apilamiento deben ser idénticas o cualquier cosa, puede pasar cualquier lista de imágenes, siempre que respete las dimensiones.