3

我对 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();
                            }
                        }
                }
            }
        }
4

0 回答 0