Как вырезать часть изображения с помощью Emgu CV (или OpenCV)?

Я хочу вырезать часть изображения (или обрезать его) с помощью Emgu CV (или OpenCV) и рассчитать средний цвет этой части; ищем изменения.

Спасибо


person Kaveh Shahbazian    schedule 29.06.2011    source источник


Ответы (2)


  1. Установите ROI (область интереса) изображения, с которым вы работаете, это будет означать, что любые вычисления выполняются только в этой области.

    image.ROI = новый прямоугольник (x, Y, ширина, высота);

  2. Рассчитайте среднее значение ROI, где «ТИП» зависит от изображения Bgr для цвета Серый для оттенков серого.

ТИП среднее = изображение.GetAverage(изображение);

  1. Когда вы закончите, сбросьте область интереса изображения, чтобы вы снова могли видеть все изображение.

Все, что делает процесс, это перебирает каждый пиксель, добавляет его значение, а затем делит на общее количество пикселей. Спасает от написания кода самостоятельно.

Спасибо Крис

person Chris    schedule 14.07.2011

Я думаю, что более новые версии OpenCV (2.3+) имеют другой метод выполнения ROI. Вот что написано в инструкции:

// create a new 320x240 image
Mat img(Size(320,240),CV_8UC3);
// select a ROI
Mat roi(img, Rect(10,10,100,100));
// fill the ROI with (0,255,0) (which is green in RGB space);
// the original 320x240 image will be modified
roi = Scalar(0,255,0);

Вот что я сделал в одном случае:

// adding a header on top of image
Mat dst = Mat::zeros(frame.rows + HEADER_HEIGHT, frame.cols, CV_8UC3); 
// frame portion
Mat roi(dst, Rect(0, HEADER_HEIGHT-1, frame.cols, frame.rows));
// header portion
Mat head(dst, Rect(0,0,frame.cols, HEADER_HEIGHT));
// zeros to clear the header portion
Mat zhead = Mat::zeros(head.rows, head.cols, CV_8UC3);

frame.copyTo(roi); // copy new image to image portion of dst
zhead.copyTo(head); // clear the header portion of dst

Вы можете использовать любой из подкадров (в моем примере roi и head) для расчета среднего значения региона. Существует функция adjustROI для перемещения области интереса и функция locateROI, которая также может быть полезна.

person zzzz    schedule 09.07.2012