【问题标题】:Using HOGDescriptor in EmguCV在 EmguCV 中使用 HOGDescriptor
【发布时间】:2017-01-20 13:37:10
【问题描述】:

我正在使用 EmguCV 来检测行人。当我尝试使用 HOGDescriptor 时,函数 DetectMultiScale(My_Image) 出现错误:

无法将 typeEmgu.CV.Structure.MCvObjectDetection[]' 隐式转换为 'System.Drawing.Rectangle[]'

        OpenFileDialog Openfile = new OpenFileDialog();
        if (Openfile.ShowDialog() == DialogResult.OK)
        {
            //Load the Image
            Image<Bgr, Byte> My_Image = new Image<Bgr, byte>(Openfile.FileName);

            Rectangle[] regions;

            using (HOGDescriptor des = new HOGDescriptor())
            {
                des.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector());
                regions = des.DetectMultiScale(My_Image);
            }
        }

【问题讨论】:

    标签: c# opencv emgucv


    【解决方案1】:

    正如错误提示,您不能直接将 MCvObjectDetection[] 类型的对象转换为 Rectangle[] 对象。但是 MCvObjectDetection 是一个以 Rectangle 作为成员变量的结构。所以你必须像这样编码

    typeEmgu.CV.Structure.MCvObjectDetection[] objects=des.DetectMultiScale(My_Image);

    然后通过循环获取矩形列表

    for(int i=0; i<objects.length;i++) 
    { 
    regions[i]=objects[i].Rect; 
    }
    

    https://sourceforge.net/p/emgucv/svn/1442/tree/trunk/Emgu.CV/PInvoke/CvType/MCvObjectDetection.cs#l22 是对 MCvObjectDetection 结构的引用。

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2013-02-24
      相关资源
      最近更新 更多