Это на Node.js надо запускать, установив перед этим opencv-wasm пакет.
Код, как будто бы не полный, потому что здесь используются переменные x, y, height и width, которые должны быть заданы, но не заданы.
// Обрезка image2
const croppedImage2 = cropImage(grayImage2, x, y, width, height);
Хотя непонятно зачем что-то обрезать, если можно сразу обрезанную правильно картинку использовать.
И по картинке, которую ты привел. Что и где ты пытаешься найти? У тебя одно изображение должно быть частью другого. Например, кружка и стол, где это кружка стоит среди тарелок, вилок и т.д.
// Загрузка модуля OpenCV-Wasm
const Module = require('opencv-wasm');
//const { Module } = require('opencv-wasm');
// Загрузка изображений в формате base64
const image1Base64 = '...'; // Замените на ваше изображение в формате base64
const image2Base64 = '...'; // Замените на ваше изображение в формате base64
// Преобразование base64 изображений в Uint8Array
const image1Data = Uint8Array.from(atob(image1Base64), c => c.charCodeAt(0));
const image2Data = Uint8Array.from(atob(image2Base64), c => c.charCodeAt(0));
// Создание матриц изображений
const image1 = Module.matFromImageData(new ImageData(image1Data, 672, 390));
const image2 = Module.matFromImageData(new ImageData(image2Data, 682, 620));
console.log('ok');
// Преобразование изображений в оттенки серого
const grayImage1 = new Module.Mat();
const grayImage2 = new Module.Mat();
console.log('ok');
Module.cvtColor(image1, grayImage1, Module.COLOR_BGR2GRAY);
Module.cvtColor(image2, grayImage2, Module.COLOR_BGR2GRAY);
// Функция обрезки изображения
function cropImage(mat, x, y, width, height) {
const roi = new Module.Rect(x, y, width, height);
return mat.roi(roi);
}
// Обрезка image2
const croppedImage2 = cropImage(grayImage2, x, y, width, height);
// Поиск одного изображения в другом
const result = new Module.Mat();
Module.matchTemplate(grayImage1, croppedImage2, result, Module.TM _CCOEFF_NORMED);
// Нахождение координат максимального значения в результате
const minMax = new Module.MinMaxLocResult();
Module.minMaxLoc(result, minMax);
// Вывод координат в лог
console.log('Координаты: ', minMax.maxLoc.x, minMax.maxLoc.y);
// Освобождение памяти
image1.delete();
image2.delete();
grayImage1.delete();
grayImage2.delete();
croppedImage2.delete();
result.delete();