2015-07-22 2 views
-1

К примеру, в этом методе:Использование системы System.Drawing.Rectangle в EmguCV (строка, столбец) или (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 класса все работают с системой координат (Row, Column), но Rectangle работает с более традиционной (x, y) системе координат.

Как эти две системы координат сопоставляются между собой? Должен ли я создать Rectangle с x == 100 и y == 10 для обрезки, начиная со 100-й строки и 10-й колонки?

ответ

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); 
+0

Хороший ответ. Прохожие: посмотрите ниже для визуального изображения. – kdbanman

-1

Rectangle класс описывает область интереса к (х, у) системы вы привыкли координат.

Например, следующий Rectangle область опишет желтый прямоугольник из следующего изображения:

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

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

Crop coordinate description.

Смежные вопросы