Domanda

Come posso vedere lo spazio colore della mia immagine con OpenCV?

Mi piacerebbe essere sicuri che sia RGB, prima di convertire in un altro utilizzando cvCvtColor () la funzione

grazie

È stato utile?

Soluzione

Purtroppo, OpenCV non fornisce alcun tipo di indicazione allo spazio colore nella struttura IplImage, quindi se si sceglie ciecamente di un IplImage da qualche parte c'è proprio nessun modo di sapere come è stato codificato. Inoltre, nessun algoritmo può definitivamente dire se l'immagine deve essere interpretato come HSV vs. RGB - è tutto solo un mucchio di byte alla macchina (dovrebbe questo sia HSV o RGB?). Vi consiglio di avvolgere l'IplImages in un'altra struct (o anche una classe C ++ con i modelli!) Per aiutare a tenere traccia di queste informazioni. Se sei veramente disperato e hai a che fare solo con un certo tipo di immagini (scene in esterni, uffici, volti, ecc) si potrebbe provare a calcolare alcune statistiche sulle immagini (ad esempio, costruire le statistiche degli istogrammi per le immagini RGB naturali e alcuni per immagini HSV naturali), quindi provare a classificare l'immagine totalmente sconosciuto confrontando quale spazio colore l'immagine è più vicino al.

Altri suggerimenti

txandi rende un punto interessante. OpenCV ha uno spazio colore BGR che viene utilizzato per impostazione predefinita. Questo è simile al metodo colore RGB, tranne che i canali B e R sono fisicamente commutati nell'immagine. Se l'ordinamento canale fisico è importante per voi, è necessario convertire la vostra immagine con questa funzione:. CvCvtColor (defaultBGR, imageRGB, CV_BGR2RGB)

Il IplImage struct ha un colorModel campo denominato composto da 4 caratteri. Purtroppo, OpenCV ignora questo campo. Ma è possibile utilizzare questo campo per tenere traccia dei diversi modelli di colore.

RCV detto, non esiste un metodo per rilevare programmazione lo spazio colore ispezionando i tre canali di colore, a meno che non si dispone di a priori conoscenza del contenuto dell'immagine (ad esempio, v'è un marcatore nell'immagine il cui colore è noto). Se sarà di accettare le immagini da fonti sconosciute, è necessario consentire all'utente di specificare lo spazio colore della loro immagine. Un buon default sarebbe assumere RGB.

Se si modifica uno qualsiasi dei colori dei pixel prima della visualizzazione, e si utilizza un visualizzatore non OpenCV, probabilmente si dovrebbe usare cvCvtColor(src,dst,CV_BGR2RGB) dopo aver terminato l'esecuzione tutti i filtri colorati. Se si sta utilizzando OpenCV per lo spettatore o si risparmia le immagini fuori a file, è necessario assicurarsi che siano nello spazio di colore BGR.

Io fondamentalmente diviso i canali e visualizzare ogni uno di capire lo spazio colore dell'immagine che sto utilizzando. Esso non può essere il modo migliore, ma funziona per me.

Per una spiegazione dettagliata, è possibile fare riferimento al link qui sotto.

https://dryrungarage.wordpress.com/2018/ 11/03 / immagine-elaborazione-basics /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top