détecter l'espace de couleur avec openCV

Comment puis-je voir l'espace couleur de mon image avec openCV ?

je voudrais être sûr que c'est RGB, avant de passer à un autre en utilisant la fonction cvCvtColor ()

merci

34
demandé sur aneuryzm 2010-01-23 12:27:54

5 réponses

malheureusement, OpenCV ne fournit aucune indication quant à l'espace de couleur dans la structure D'IplImage, donc si vous prenez aveuglément un IplImage quelque part, il n'y a tout simplement aucun moyen de savoir comment il a été encodé. De plus, aucun algorithme ne peut vous dire avec certitude si une image doit être interprétée comme HSV vs. RGB - ce n'est qu'un tas d'octets à la machine ( ce devrait-il être HSV ou RGB?). Je vous recommande d'envelopper vos images dans une autre structure (ou même un Classe C++ avec gabarits!) pour vous aider à suivre cette information. Si vous êtes vraiment désespéré et que vous avez affaire seulement à un certain type d'images (scènes en plein air, Bureaux, visages, etc.) vous pouvez essayer de calculer quelques statistiques sur vos images (par exemple, construire des statistiques d'histogrammes pour les images RVB naturelles et certaines pour les images HSV naturelles), puis essayer de classer votre image totalement inconnue en comparant l'espace de couleur de votre image est plus proche.

17
répondu rcv 2012-11-19 13:28:23

txandi fait un point intéressant. OpenCV a un colorspace BGR qui est utilisé par défaut. Ceci est similaire à l'espace de couleurs du RVB sauf que les canaux B et R sont physiquement commutés dans l'image. Si l'ordre physique du canal est important pour vous, vous devrez convertir votre image avec cette fonction: cvCvtColor(defaultBGR, imageRGB, CV_BGR2RGB).

6
répondu Oliver 2010-04-22 14:42:40

le structure D'image a un champ nommé colorModel composé de 4 caractères. Malheureusement, OpenCV ignore ce domaine. Mais vous pouvez utiliser ce champ pour garder une trace des différents modèles de couleur.

3
répondu f3lix 2010-02-03 11:45:10

Comme rcv , a déclaré, il n'y a pas de méthode pour détecter par programmation l'espace de couleur en inspectant les trois canaux de couleur, sauf si vous avez 151940920" a priori connaissance du contenu de l'image (par exemple, il est un marqueur dans l'image, dont la couleur est connu). Si vous accepter les images provenant de sources inconnues, vous devez permettre à l'utilisateur de spécifier l'espace couleur de leur image. Un bon défaut serait de supposer RVB.

si vous modifiez n'importe quelle couleur de pixel avant l'affichage, et vous utilisez un visualiseur non-OpenCV, vous devriez probablement utiliser cvCvtColor(src,dst,CV_BGR2RGB) après avoir terminé l'exécution de tous vos filtres de couleur. Si vous utilisez OpenCV pour le spectateur ou si vous sauvegardez les images dans le fichier, vous devez vous assurer qu'elles sont dans L'espace de couleur BGR.

2
répondu Scottie T 2018-07-18 19:25:29

j'ai essentiellement divisé les canaux et d'afficher chacun d'eux pour comprendre l'espace de couleur de l'image que j'utilise. Il peut ne pas être le meilleur moyen, mais cela fonctionne pour moi.

pour une explication détaillée, vous pouvez vous référer au lien ci-dessous.

https://dryrungarage.wordpress.com/2018/03/11/image-processing-basics /

0
répondu Raj 2018-03-16 09:36:36