我有一个代码:
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/