2015-11-05 6 views
1

У меня есть ROI изображения, и мне нужно создать новое изображение, которое будет частью изображения. Как я могу это сделать? (Я хочу сделать кусочки массивом изображений, а не прямоугольников.)Обрезать изображение в Emgu.CV

Image<Bgr, byte> img = frame.Copy(); 
pieces = new List<System.Drawing.Rectangle>(); 

int input_cell_width = img.Width/Cols; 
int input_cell_height = img.Height/Rows; 

System.Drawing.Rectangle old_roi = img.ROI; 

for (int row = 0; row < Rows; ++row) 
{ 
    for (int col = 0; col < Cols; ++col) 
    { 
     // Get template 
     img.ROI = gridOuput.GetCellItemRect(row, col, new System.Drawing.Point(0, 0)); 
     pieces.Add(img.ROI); 
    } 
} 

Спасибо.

ответ

4

Сначала установите ROI изображения (как вы уже это сделали), а затем используйте метод объекта Copy() для Image. Пока установлен ROI изображения, Copy() копирует только эту часть части изображения. См. Пример ниже.

var rois = new List<Rectangle>(); // List of rois 
var imageparts = new List<Image<Gray,byte>>(); // List of extracted image parts 

using (var image = new Image<Gray, byte>(...)) 
{ 
    foreach (var roi in rois) 
    { 
     image.ROI = roi; 
     imageparts.Add(image.Copy()); 
    } 
} 
Смежные вопросы