2011-06-29 3 views

ответ

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

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

  2. Рассчитывают среднее значение ROI, где "ТИП" является изображение зависимой BGR для серого цвета для оттенков серого

TYPE = средний image.GetAverage (изображение);

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

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

Благодаря Крис

1

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

// 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, которая также может быть полезной.

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