0
我试图使用EmguCV检测图像的模糊。现在我试图做一个灰色图像的FFT,但我被卡住了,因为我的程序在调用CvInvoke.cvCopy
后挂起。见下:EmguCV检测图像模糊
_capturedFrames.ForEach(x =>
{
using(var gray = x.Convert<Gray, float>())
{
IntPtr complexImage = CvInvoke.cvCreateImage(gray.Size, IPL_DEPTH.IPL_DEPTH_32F, 2);
CvInvoke.cvSetZero(complexImage); // Initialize all elements to Zero
CvInvoke.cvSetImageCOI(complexImage, 1);
CvInvoke.cvCopy(gray.Ptr, complexImage, IntPtr.Zero);
CvInvoke.cvSetImageCOI(complexImage, 0);
var dft = new Matrix<float>(gray.Rows, gray.Cols, 2);
CvInvoke.cvDFT(complexImage, dft, CV_DXT.CV_DXT_FORWARD, 0);
double min;
double max;
Point minLoc;
Point maxLoc;
dft.MinMax(out min, out max, out minLoc, out maxLoc);
if (max > overallMax)
{
overallMax = max;
index = _capturedFrames.IndexOf(x);
}
CvInvoke.cvReleaseImage(ref complexImage);
}
});
上面的代码的目的是循环浏览内存中的图像集合,并找到最清晰的图像的索引。让我们假装上面的方法正在工作......这是一个检测最清晰图像的强大方法吗? FFT是否可靠用于此目的?
我应该注意到,这真的只解决了运行时问题,但不是这是否是可靠的方法的问题。 – a432511