Question

comment puis-je voir l'espace couleur de mon image avec OpenCV?

Je voudrais être sûr qu'il est RVB, avant de se convertir à une autre en utilisant la fonction cvCvtColor ()

Merci

Était-ce utile?

La solution

Malheureusement, OpenCV ne fournit aucune sorte d'indication quant à l'espace de couleur dans la structure IplImage, donc si vous prenez aveuglément un IplImage de quelque part il n'y a aucun moyen de savoir comment il a été codé. De plus, aucun algorithme ne peut définitivement vous dire si une image doit être interprétée comme HSV vs RGB - il est tout simplement un tas d'octets à la machine (devrait ce être HSV ou RGB?). Je vous recommande d'emballer vos IplImages dans un autre struct (ou même une classe C ++ avec des modèles!) Pour vous aider à garder une trace de ces informations. Si vous êtes vraiment désespéré et que vous avez affaire seulement avec un certain type d'images (scènes extérieures, des bureaux, des visages, etc.), vous pouvez essayer de calculer des statistiques sur vos images (par exemple, construire des statistiques d'histogramme pour les images RVB naturelles et certains pour images HSV naturelles), et ensuite essayer de classer votre image totalement inconnu en comparant quel espace de couleur de votre image est plus proche.

Autres conseils

txandi fait un point intéressant. OpenCV a une colorspace BGR qui est utilisé par défaut. Ceci est similaire à la RGB sauf que colorspace les canaux B et R sont physiquement activés dans l'image. Si la commande de canal physique est important pour vous, vous devez convertir votre image avec cette fonction. CvCvtColor (defaultBGR, imageRGB, CV_BGR2RGB)

IplImage struct 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.

RCV dit, il n'y a pas de méthode pour détecter par programme l'espace colorimétrique en examinant les trois canaux de couleur, sauf si vous avez a priori connaissance du contenu de l'image (par exemple, il y a un marqueur dans l'image dont la couleur est connue). Si vous accepterez des 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 l'une des couleurs de pixels avant l'affichage et vous utilisez un spectateur non-OpenCV, vous devriez probablement utiliser cvCvtColor(src,dst,CV_BGR2RGB) après avoir fini de tourner tous vos filtres de couleur. Si vous utilisez OpenCV pour le spectateur ou épargnerez les images vers le fichier, vous devez vous assurer qu'ils sont dans l'espace couleur BGR.

Je essentiellement diviser les canaux et afficher chacun de comprendre l'espace colorimétrique de l'image que je utilise. Il ne peut pas être la meilleure façon, mais ça fonctionne pour moi.

Pour une explication détaillée, vous pouvez consulter le lien ci-dessous.

https://dryrungarage.wordpress.com/2018/ 03/11 / bases de traitement image /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top