Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Есть готовый код для поиска одного изображения в другом, нужно запустить и получить координаты изображения: JS

Александр Григоренко Мастер (1184), на голосовании 1 год назад
Вот код:
// Загрузка модуля 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();
Дополнен 1 год назад
Кто реально поможет дам 100 рублей. НО если поможет!!!!
Голосование за лучший ответ
asdsada asdasd Ученик (227) 1 год назад
ну это короче туда сюда и вот туда вон, и получится эта, ну, как её, ну эта, ну крч ты понял
Bulat_Almukhametov Мастер (1160) 1 год назад
Это на Node.js надо запускать, установив перед этим opencv-wasm пакет.
Код, как будто бы не полный, потому что здесь используются переменные x, y, height и width, которые должны быть заданы, но не заданы.
 // Обрезка image2  
const croppedImage2 = cropImage(grayImage2, x, y, width, height);
Хотя непонятно зачем что-то обрезать, если можно сразу обрезанную правильно картинку использовать.

И по картинке, которую ты привел. Что и где ты пытаешься найти? У тебя одно изображение должно быть частью другого. Например, кружка и стол, где это кружка стоит среди тарелок, вилок и т.д.
Похожие вопросы