简而言之,我试图使用 OpenCVSharp 作为 C# 函数的一部分来计算图像的清晰度。
作为第一次尝试,我使用了拉普拉斯滤波器,如下所示:
int kernel_size = 3;
int scale = 1;
int delta = 0;
int ddepth = image.Type().Depth;
Mat sharpenedImage = image.Laplacian(ddepth, kernel_size, scale, delta);
\* calculate the variance of the laplacian*\
最后,我想要这个的方差sharpenedImage
.
我已经在 Python 中轻松尝试过:
def variance_of_laplacian(image):
lap_val = cv2.Laplacian(image, cv2.CV_8UC1)
return lap_val.var()
那么有没有等价的lap_val.var()
in C#?
我找不到任何与此相关的匹配文章。谢谢你!
方差是标准差的平方,所以你应该能够使用它。
以下代码编译为OpenCvSharp4
and OpenCvSharp4.runtime.win
,但我不知道它是否符合你的要求。试试看。
static double Variance(Mat image)
{
using (var laplacian = new Mat())
{
int kernel_size = 3;
int scale = 1;
int delta = 0;
int ddepth = image.Type().Depth;
Cv2.Laplacian(image, laplacian, ddepth, kernel_size, scale, delta);
Cv2.MeanStdDev(laplacian, out var mean, out var stddev);
return stddev.Val0 * stddev.Val0;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)