【问题标题】:EMGU CV MCvBox2D.GetVertices gives different order of cornersEMGU CV MCvBox2D.GetVertices 给出不同的角顺序
【发布时间】:2013-04-08 15:20:55
【问题描述】:

我正在为我的项目使用 EMGU CV,但遇到了一个奇怪的问题。
我使用 cannyedges 在照片中找到一些正方形。
这工作正常。之后我想在每个正方形内取一个像素并用它来绘制边框。

我面临的问题是我需要每个角的顶点才能生成随机像素。 为此,我使用以下代码:

PointF[] corners = rectangle.GetVertices();
float x = Math.Max(corners[1].X, corners[0].X);
float y = Math.Max(corners[1].Y, corners[2].Y);
float width = Math.Min(corners[2].X, corners[3].X) - x;
float height = Math.Min(corners[0].Y, corners[3].Y) - y;

这段代码的问题在于 rectangle.GetVertices();每次给出不同的角落顺序。
第一个矩形返回左下角为角 0,左上角为角 1 等。
第二个矩形如何返回右下角为角 0,左下角为角 1 等等。

我想知道是否有其他人遇到此问题,是否有人知道如何解决此问题?

如果您需要更多信息来回答这个问题,请告诉我。

【问题讨论】:

  • 我也有同样的问题。顶点的顺序不同。

标签: c# emgucv rectangles


【解决方案1】:
PointF[] corners = rectangle.GetVertices();

// Maybe this
corners = corners.OrderBy(s => s.X).ThenBy(s => s.Y).ToArray();

float x = Math.Max(corners[1].X, corners[0].X);
float y = Math.Max(corners[1].Y, corners[2].Y);
float width = Math.Min(corners[2].X, corners[3].X) - x;
float height = Math.Min(corners[0].Y, corners[3].Y) - y;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多