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