【问题标题】:Is EmguCV's System.Drawing.Rectangle usage by (Row,Column) or (X,Y)?EmguCV 的 System.Drawing.Rectangle 是按(行,列)还是(X,Y)使用的?
【发布时间】:2015-07-22 20:07:10
【问题描述】:

例如,在这个方法中:

Image.Copy(Rectangle roi)

返回一个新的Image,根据System.Drawing.Rectangle 参数进行裁剪。一个示例用法是:

var image = new Image<Gray, Byte>("filename.jpg");
var cropRectangle = new Rectangle(0, 200, 100, 10);
var cropped = image.Copy(cropRectangle);

OpenCV、EmguCV 以及 Image 类都使用坐标系 (Row, Column),但 Rectangle 使用更传统的 (x, y) 坐标系。

这两个坐标系如何相互映射?我应该创建一个带有x == 100y == 10Rectangle 以从第100 行和第10 列开始裁剪吗?

【问题讨论】:

    标签: c# opencv coordinate-systems emgucv


    【解决方案1】:

    您只需要切换行和列。

    // Crop from row (y) = 20, col (x) = 30, width = 40, height = 50
    // Rectangle(x, y, width, height)
    
    var cropRectangle = new Rectangle(30, 20, 40, 50);
    

    【讨论】:

    • 好答案。路人:看下面的视觉描述。
    【解决方案2】:

    Rectangle 类将在您习惯的 (x,y) 坐标系中描述感兴趣的区域。

    例如,以下Rectangle 区域将描述下图中的黄色矩形:

    var bound = new Rectangle(0, 200, 100, 10);
    
    // bound.X == 0
    // bound.Y == 200
    // bound.Width == 100
    // bound.Height == 10
    

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2012-01-01
      • 2011-04-05
      • 2015-12-02
      • 2011-04-06
      相关资源
      最近更新 更多