2011-06-29 14 views

risposta

12
  1. Impostare il ROI (Region of Interest) dell'immagine che si sta lavorando con questo significherà qualsiasi calcolo viene effettuato solo su questa zona.

    image.ROI = nuovo rettangolo (x, Y, larghezza, altezza);

  2. calcolare la media della ROI dove "TIPO" è un'immagine dipende Bgr per un colore grigio Scala di grigi

TIPO media = image.GetAverage (immagine);

  1. Quando hai finito di ripristinare la ROI dell'immagine in modo da poter vedere di nuovo l'intera immagine.

Tutto il processo esegue un ciclo ogni pixel aggiunge il suo valore quindi divide per il numero totale di pixel. Salva te stesso scrivendo il codice.

Grazie Chris

1

Penso che versioni più recenti di OpenCV (2.3 +) hanno un metodo diverso di fare ROI. Ecco ciò che il manuale dice:

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

Ecco quello che ho fatto in un caso:

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

È possibile utilizzare uno dei controtelai (roi e head nel mio esempio) per calcolare la media del regione. C'è una funzione adjustROI per spostare la regione di interesse e una funzione locateROI che potrebbe anche essere utile.

Problemi correlati