在emgu中使用Seq#

时间:2015-06-19 07:58:35

标签: c# emgucv

我有一个自定义点的结构(而不​​是System.Drawing.Point):

struct PointD
{
    public double X,Y;
}

我希望获得Seq个点,然后从中提取最小区域矩形:

using (MemStorage stor = new MemStorage())
{
    Seq<PointD> seq = new Seq<PointD>(CvInvoke.CV_MAKETYPE(6, 2), stor);
    seq.Push(new PointD(0.5, 0));
    seq.Push(new PointD(1.0, 0));
    seq.Push(new PointD(0, 1.0));
    seq.Push(new PointD(1.0, 1.0));
    var output = seq.GetMinAreaRect();
}

但是,此代码在GetMinAreaRect()处抛出异常,表示输入序列必须为2d点。我的问题是有没有办法正确地获取我的数据格式?我想我只是缺少一些东西,因为这段代码适用于System.Drawing.Point

1 个答案:

答案 0 :(得分:0)

我认为以下方法可行:

int[] pts = {
  new PointF(0.5, 0),
  new PointF(1.0, 0),
  new PointF(0, 1.0),
  new PointF(1.0, 1.0)
};
MCvBox2D box = PointCollection.MinAreaRect(pts);

其他示例:http://www.emgu.com/wiki/index.php/Minimum_Area_Rectangle_in_CSharp