2011-06-29 11 views

Odpowiedz

12
  1. Ustaw ROI (Region of Interest) obrazu pracujesz z tego będzie oznaczać dowolny obliczanie odbywa się tylko na tym obszarze.

    image.ROI = nowy prostokąt (x, Y, szerokość, wysokość);

  2. obliczać średnią ROI gdzie "Typ" jest zależna Bgr obrazu na kolor szary w skali szarości

TYP średni = image.GetAverage (obraz);

  1. Po zakończeniu resetowania ROI obrazu, aby ponownie wyświetlić cały obraz.

Cały proces odbywa się w pętli, każdy piksel dodaje swoją wartość, a następnie dzieli się przez całkowitą liczbę pikseli. Umożliwia zapisanie samego wpisania kodu.

Dzięki Chris

1

myślę, że nowsze wersje OpenCV (2.3+) mają inną metodę robienia ROI. Oto co instrukcja mówi:

// 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); 

Oto co zrobiłem w jednym przypadku:

// 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 

można użyć dowolnego z ram pomocniczych (roi i head w moim przykładzie), aby obliczyć średnią z region. Istnieje funkcja adjustROI do przenoszenia interesującego obszaru i funkcji locateROI, która może być również użyteczna.

Powiązane problemy