Quello che ci serve è la struttura dati Rect della libreria core. Rect rappresenta il template per un rettangolo 2D nella libreria OpenCV. Gli unici attributi sono le coordinate del punto di origine (in alto a sinistra), il valore della base ed il valore dell'altezza. Tra i metodi, una citazione di merito va a alle funzioni area() che restuisce l'area del rettangolo e contains(Point p) la quale restituisce true se il punto p è contenuto nel rettangolo o false altrimenti.
Un'altra feature interessante di questa struttura dati sono tutti gli overload fatti sugli operatori di base che permettono di "mixare" con facilità più oggetti Rect. Vi mostro di seguito le operazioni possibili prese dalla documentazione di OpenCV:
Utilizzando queste operazioni già implementate sarà facile, per esempio, controllare se due rettangoli si intersecano o sono annidati (uno dentro l'altro).
Esiste più di un costruttore per questa classe. Per esempio un Rect può essere inizializzato sia tramite il suo punto in alto a sinistra e la coppia altezza/base del rettangolo, sia esplicitando i punti (intesi come oggetti Point) in alto a sinistra e in basso a destra del rettangolo.
Se vogliamo visualizzare solo una porzione conosciuta di un'immagine ci basteranno quindi queste due righe di codice:
// inizializazione Mat image = imread("image.jpg"); Point pt1 = Point(20,20); Point pt2 = Point(100,100); // instanziazione del rettangolo di maschera Rect roi = Rect(pt1, pt2); // applicazione della maschera sull'immagine Mat img = image(roi); // la sezione di immagine è mostrata a video namedWindow(wndname, 1); imshow(wndname, img);
Con questo veloce tutorial volevo anche scusarmi a nome di tutto lo staff per questo ultimo periodo di latitanza.
Potrei citare le parole di Leo Ortolani sul suo blog:
"Insomma… abbiate pazienza se questo blog rallenterà il ritmo, è che sulla sabbia si corre più lentamente.
Non è che vi ho voltato le spalle."
In realtà non siamo sulla spiaggia in questo periodo (per lo meno non tutti...), ma siamo tutti oberati dagli impegni universitari. Questo significa però che appena sarà tutto finito preparatevi ad una inondazione di articoli sui progettini universitari che abbiamo portato avanti negli ultimi mesi.
