【发布时间】:2022-05-18 19:06:34
【问题描述】:
我尝试使用 OpenCV 实现模糊检测,但在 OpenCV js 中找不到以下语句的等效项:
cv2.Laplacian(image, cv2.CV_64F).var()
还有其他计算方差的方法吗?
【问题讨论】:
标签: javascript opencv image-processing
我尝试使用 OpenCV 实现模糊检测,但在 OpenCV js 中找不到以下语句的等效项:
cv2.Laplacian(image, cv2.CV_64F).var()
还有其他计算方差的方法吗?
【问题讨论】:
标签: javascript opencv image-processing
您可以通过获取拉普拉斯垫的标准偏差然后对其进行平方来计算方差。 OpenCV 有计算标准差的功能。
cv.meanStdDev(srcMat, mean, standardDeviationMat)
在下面的代码中,您可以检查它是如何完成的。我正在从ImageData 对象读取图像,然后将其更改为灰度,最后计算拉普拉斯方差:
const cvImage = cv.matFromImageData(imageData);
const grayImage = new cv.Mat();
const laplacianMat = new cv.Mat();
cv.cvtColor(cvImage, grayImage, cv.COLOR_RGBA2GRAY, 0);
cv.Laplacian(grayImage, laplacianMat, cv.CV_64F);
const mean = new cv.Mat(1, 4, cv.CV_64F);
const standardDeviationMat = new cv.Mat(1, 4, cv.CV_64F);
cv.meanStdDev(laplacianMat, mean, standardDeviationMat);
const standardDeviation = standardDeviationMat.doubleAt(0, 0);
const laplacianVar = standardDeviation * standardDeviation;
在这个post 中有一个类似的答案,但是使用包opencv4nodejs 而不是opencv.js。
【讨论】: