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