我有一个自定义点的结构(而不是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
。
答案 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