Да, это можно сделать с помощью Python.
Библиотека, которую вы ищете, - OpenCV ([https://opencv.org] [1] / ).
Некоторые основные c OpenCV python руководства (https://docs.opencv.org/master/d9/df8/tutorial_root.html).
1) Вы можете использовать функцию imread () для чтения изображений из файлов.
2) Вы можете использовать функцию resize () для изменения размера изображений.
3) Вы можете создать пустой основной массив numpy, соответствующий размеру и глубине (глубине цвета) черного прямоугольника на вашем рисунке. показано, измените размер изображения и скопируйте содержимое в пустой массив, начиная с нужной позиции.
Ниже приведен пример кода, который делает что-то близкое к тому, что вам может понадобиться, вы можете изменить его в соответствии с вашими фактическими потребностями . (Поскольку ваши требования не ясны, я написал такой код, чтобы он мог, по крайней мере, направлять вас.)
import numpy as np
import cv2
import matplotlib.pyplot as plt
# You can store most of these values in another file and load them.
# You can modify this to set the dimensions of the background image.
BG_IMAGE_WIDTH = 100
BG_IMAGE_HEIGHT = 100
BG_IMAGE_COLOR_DEPTH = 3
# This will act as the black bounding box you have shown in your figure.
# You can also load another image instead of creating empty background image.
empty_background_image = np.zeros(
(BG_IMAGE_HEIGHT, BG_IMAGE_WIDTH, BG_IMAGE_COLOR_DEPTH),
dtype=np.int
)
# Loading an image.
# This will be copied later into one of those red boxes you have shown.
IMAGE_PATH = "./image1.jpg"
foreground_image = cv2.imread(IMAGE_PATH)
# Setting the resize target and top left position with respect to bg image.
X_POS = 4
Y_POS = 10
RESIZE_TARGET_WIDTH = 30
RESIZE_TARGET_HEIGHT = 30
# Resizing
foreground_image= cv2.resize(
src=foreground_image,
dsize=(RESIZE_TARGET_WIDTH, RESIZE_TARGET_HEIGHT),
)
# Copying this into background image
empty_background_image[
Y_POS: Y_POS + RESIZE_TARGET_HEIGHT,
X_POS: X_POS + RESIZE_TARGET_WIDTH
] = foreground_image
plt.imshow(empty_background_image)
plt.show()