@Azperin
Дилетант

Вставить картинку в картинку?

const cv = require('opencv4nodejs');
var largeImg= cv.imread('./large.jpg'); // 30720x30720
var smallBlock1= cv.imread('./block1.jpg');  // 2048x2048
var smallBlock2= cv.imread('./block2.jpg');  // 2048x2048
var smallBlock3= cv.imread('./block3.jpg');  // 2048x2048

Как вставить блоки в большую картинку с оффсетом ? Какой метод юзается ?
у cv.addWeighted нет смещения, просто img.add тоже без них
  • Вопрос задан
  • 359 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Azperin Автор вопроса
Дилетант
Пришел примерно к такому решению, может кому пригодится
var largeImg = cv.imread('./largeImg.jpg'); // загружаем какое-то большое изображение
// либо можно сгенерировать new cv.Mat(new Array(15360).fill( new Array(15360).fill([0,0,0]) ), cv.CV_8UC3);
var blockSideSize = 2048; // размер стороны в пикселях, он же и оффсет, т.е. блоки у нас 2048х2048
for (let x = 0; x < 3; x++) {
	for (let y = 0; y < 3; y++) {
		// тупо попиксельно заменяем каждый цвет
		let block = cv.imread(`./blocks/block_${x}-${y}.jpg`);
		for (let y1 = 0; y1 < blockSideSize; y1++) {
			for (let x1 = 0; x1 < blockSideSize; x1++) {
				largeImg.set((y * blockSideSize + y1), (x * blockSideSize + x1), block.at(y1, x1));
			};
		};
	};
};
cv.imwrite('./ResultLargeImage.jpg', largeImg);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы