2017-03-07 6 views
1

イメージからHOG記述子を抽出しようとしていますが、結果として常に0が返されます。どのようにそれを解決することができます。ここでは、HOG記述子を抽出するために使用したC#コードを示します。EmguCV HOG記述子は常に0です

private void btnGetHOGDescriptor_Click(object sender, EventArgs e) 
{ 
    if(InputImage.Original != null) 
    { 
     Image<Bgr, Byte> inputImage = new Image<Bgr, Byte>(new Bitmap(pbInputImage.Image)); 
     float[] descriptor = GetVector(inputImage); 

     rtbDescriptor.Text = string.Join(" ", descriptor); 
    } 
} 

public float[] GetVector(Image<Bgr, Byte> img) 
{ 
    HOGDescriptor hog = new HOGDescriptor(); // with defaults values 
    Point[] p = new Point[img.Width * img.Height]; 
    int k = 0; 
    for (int i = 0; i < img.Width; i++) 
    { 
     for (int j = 0; j < img.Height; j++) 
     { 
      Point p1 = new Point(i, j); 
      p[k++] = p1; 
     } 
    } 

    return hog.Compute(img, new Size(8, 8), new Size(0, 0), p); 
} 

答えて

0

あなたがあなたのそれぞれgetVectorを変更した場合:

public float[] GetVector(Image<Bgr, Byte> img) 
     { 
      HOGDescriptor hog = new HOGDescriptor(); // with defaults values 

      return hog.Compute(img, new Size(8, 8), new Size(0, 0), null); 
     } 
+0

ありがとうございました。このコードは、プロジェクトプロパティで「ネイティブコードのデバッグ」を有効にした後に機能しています。 –