EmguCV 的 System.Drawing.Rectangle 是按(行,列)还是按(X,Y)使用的?
Is EmguCV's System.Drawing.Rectangle usage by (Row,Column) or (X,Y)?
例如,在这个方法中:
返回一个新的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 == 100
和 y == 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);
Rectangle
class将在您习惯的(x,y)坐标系中描述感兴趣区域。
例如,以下 Rectangle
区域将描述下图中的黄色矩形:
var bound = new Rectangle(0, 200, 100, 10);
// bound.X == 0
// bound.Y == 200
// bound.Width == 100
// bound.Height == 10
例如,在这个方法中:
返回一个新的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 == 100
和 y == 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);
Rectangle
class将在您习惯的(x,y)坐标系中描述感兴趣区域。
例如,以下 Rectangle
区域将描述下图中的黄色矩形:
var bound = new Rectangle(0, 200, 100, 10);
// bound.X == 0
// bound.Y == 200
// bound.Width == 100
// bound.Height == 10