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

时间:2015-07-22 20:07:11

标签: c# opencv coordinate-systems emgucv

例如,在此方法中:

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)坐标系。< / p>

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:-1)

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

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

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

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

Crop coordinate description.