EmguCV 的 System.Drawing.Rectangle 是按(行,列)还是按(X,Y)使用的?

Is EmguCV's System.Drawing.Rectangle usage by (Row,Column) or (X,Y)?

例如,在这个方法中:

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 class 都在坐标系 (Row, Column) 下运行,但是 Rectangle 在更传统的 [=18] 下运行=] 坐标系.

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

您只需要切换行和列。

// 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);

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

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

var bound = new Rectangle(0, 200, 100, 10);

// bound.X == 0
// bound.Y == 200
// bound.Width == 100
// bound.Height == 10