话不多说,直接上代码:
const cv = require('opencv.js');
const fs = require('fs');
const Jimp = require('jimp');
const path = require('path');
async function getBlur(){
let jimpSrc = await Jimp.read(path.join(__dirname,'test.jpg'));
// Create a matrix from image. input image expected to be in RGBA format
let src = cv.matFromImageData(jimpSrc.bitmap);
let dst = new cv.Mat();
// 获取模糊区域(根据业务调整)
let rect = new cv.Rect(100,100,100,100);
let roiImage = src.roi(rect);
// 高斯模糊
let ksize = new cv.Size(11,11);
cv.GaussianBlur(roiImage,dst,ksize,10,10,cv.BORDER_DEFAULT);
// 模糊后图像的ROI放回原始图像
dst.copyTo(src.roi(rect))
// Save the result
let raw_data = {
data: src.data,
width: src.size().width,
height: src.size().height
};
const image = await new Jimp(raw_data);
const file = "out_image." + image.getExtension();
await image.writeAsync(file);
// 释放内存
src.delete();
dst.delete();
}
module.exports = {
getBlur
}
效果:
- 原图
- 添加模糊后(左上位置)