python - opencv4nodejs如何计算拉普拉斯方差的模糊度

标签 python node.js opencv

我有一个代码:

const cv = require('opencv4nodejs');

let text = "";

let image = cv.imread('./images/focused.jpg');
let gray = image.cvtColor(cv.COLOR_BGR2GRAY);
let fm = image.laplacian(cv.CV_64F);
cv.imwrite('./images/new_very_blured.jpg', gray);

console.log(image);
console.log(fm);
console.log(fm.step / image.step);

我保存的图片是黑色方 block ,但它不是我所期望的。 我读了一篇关于计算模糊度的文章:

cv2.Laplacian(image, cv2.CV_64F).var() // Python function

本文 - https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/

但是我使用nodejs,而在nodejs中这个函数不存在,所以我尝试使用其他函数,但它的工作原理不像Python中那样。请帮助我,我需要如何编辑我的代码才能使其正常工作。在控制台中,我需要获得从 1 到 100 的百分比,这将显示模糊程度。

最佳答案

这是完整的解决方案:

//image : orirginal image
let gray = new cv.Mat();
let laplacian_mat = new cv.Mat();

cv.cvtColor(image, gray, cv.COLOR_RGBA2GRAY);

cv.Laplacian(gray, laplacian_mat, cv.CV_64F, 1, 1, 0, cv.BORDER_DEFAULT);

// cv.imshow("canvasOutput", laplacian_mat);

let myMean = new cv.Mat(1, 4, cv.CV_64F);
let myStddev = new cv.Mat(1, 4, cv.CV_64F);
cv.meanStdDev(laplacian_mat, myMean, myStddev);

let sharpness = myStddev.doubleAt(0, 0);

console.log(sharpness * sharpness);


gray.delete();
laplacian_mat.delete();
myMean.delete();
myStddev.delete();

关于python - opencv4nodejs如何计算拉普拉斯方差的模糊度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52679580/

相关文章:

python - 如何使用经过训练的 Tensorflow 模型进行预测

c++ - 在NAryMatIterator中了解平面

python - 如何重新着色图像中的多个像素 - Python

mysql - Nodejs-mysql 池连接不适用于异步系列

ios - 集成 OpenCV 框架的架构 armv7 的 undefined symbol

python - Django中如何处理数据库异常

python - 如何将函数参数的值传递给变量?

python - 更改 PIL 中的像素颜色值

javascript - MongoClient和Express,连接成功...但是: TypeError: Cannot read property 'collection' of null

javascript - 如何通过 Jasmine JS 在 Webdriver 中操作 "text"的验证?