我对 Emgu GPU 功能的当前状态(使用 Emgu 2.4 x64)感到困惑。GPUImage 可用的方法非常有限 - 我正在尝试将其用于 blob 检测。具体来说,像这样的代码结构可以使用 GPU 来加速 blob 提取。
关于如何利用 Emgu 的 GPU 功能有什么想法吗?或者,有哪些选择可以利用 GPU(除了 CUDA 中的重写)?
using (Image<Gray, Byte> currentGrayFrame = imgCurrentFrame.Convert<Gray, Byte>())
{
using (MemStorage storage = new MemStorage())
{
currentGrayFrame._SmoothGaussian(3);
currentGrayFrame._GammaCorrect(1.8d);
currentGrayFrame._EqualizeHist();
CvInvoke.cvCanny(currentGrayFrame, currentGrayFrame, 120, 60, 3);
int blobID = 0;
for (Contour<System.Drawing.Point> contours = currentGrayFrame.FindContours(CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, RETR_TYPE.CV_RETR_EXTERNAL, storage);
contours != null; contours = contours.HNext)
{
Contour<Point> contour = contours.ApproxPoly(contours.Perimeter * 0.001);
if (contour.Area > 100)
if (contour.Total > 5)
{
Rectangle rect = contour.BoundingRectangle;
Image<Bgr, Byte> imgBlob = imgCurrentFrame.Copy(rect);
{
//Bitmap bmpBlob = imgBlob.Bitmap;
blobsList.Add(new Blob
{
BlobID = ++blobID,
BlobImage = imgBlob,
Location = rect,
});
//imgBlob.Dispose();
}
}
}
}
}