/* eslint-disable @typescript-eslint/no-explicit-any */ import * as cv from 'opencv4nodejs' import path from 'path'; import db_ops from '../helpers/db_ops' import config from '../../config/config' import { promises as fs } from "fs"; import sharp from 'sharp' const detector=new cv.SIFTDetector({nFeatures:500}) const PATH_TO_IMAGES = path.join(config.root_path, 'public', 'images') function normalize(descriptor:any){ for(let i=0;i2000*2000){ const k=Math.sqrt(image.height*image.width/(2000*2000)) data = await sharp(data).resize({height:Math.round(image.height/k),width:Math.round(image.width/k)}).toBuffer() } const img = await cv.imdecodeAsync(data); const keyPoints = await detector.detectAsync(img); const descriptors = await detector.computeAsync(img, keyPoints); const desc1_normalized=normalize(descriptors.getDataAsArray()) descriptors.release() img.release() await db_ops.image_search.add_sift_features_by_id(image.id,desc1_normalized) }catch(err){ console.log(err) console.log(image.id) } } } async function run() { await calculate_sift_features() process.exit() } run()