Вставить одну матрицу в другую
Первая матрица - это пустое изображение
blank_img=np.zeros(shape=[int(new_x), int(new_y)])
print(blank_img.shape)
(2074, 1570)
Вторая матрица -это одноканальное изображение
im_first= cv2.imread('1.tif',cv2.IMREAD_GRAYSCALE)
(1280, 960)
Как поместить вторую матрицу в первую? Т.е. первое изображение - это подложка для остальных изображений Для примера
A=[[0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0]]
B=[[2, 3, 4]
[5, 6, 7]
[8, 9, 3]]
Желаемый результат
[[0, 0, 0, 0, 0, 0]
[0, 0, 2, 3, 4, 0]
[0, 0, 5, 6, 7, 0]
[0, 0, 8, 9, 3, 0]
[0, 0, 0, 0, 0, 0]]
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Можно сделать через срезы, используя ваш пример:
import numpy as np
A=np.array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]])
B=np.array([[2, 3, 4],
[5, 6, 7],
[8, 9, 3]])
A[1:4,2:5] = B # со строки с индексом 1 (нумерация с 0) и с колонки 2 и до указанных строки и колонки
A
Вывод:
array([[0, 0, 0, 0, 0, 0],
[0, 0, 2, 3, 4, 0],
[0, 0, 5, 6, 7, 0],
[0, 0, 8, 9, 3, 0],
[0, 0, 0, 0, 0, 0]])
Автор решения: Владислав Харламов
→ Ссылка
import numpy as np
>>> A = np.ones((3,3)) # Создаем просто матрицу из единиц
>>> np.pad(A, (1,2)) # Добавляем обрамление нулями по выбранным измерениям.
>>> array([[0., 0., 0., 0., 0., 0.],
[0., 1., 1., 1., 0., 0.],
[0., 1., 1., 1., 0., 0.],
[0., 1., 1., 1., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.]])