Table des matières
1. Plusieurs espaces colorimétriques courants :
2 Conversion de l'espace colorimétrique dans OpenCV
3. Programme de baguette magique simple
Maison interface Web Tutoriel PS La route vers la croissance d'OpenCV (3) : imiter l'outil baguette magique dans PhotoShop

La route vers la croissance d'OpenCV (3) : imiter l'outil baguette magique dans PhotoShop

Feb 20, 2017 am 09:09 AM
photoshop

Le sujet de cet article est en fait la conversion de l'espace colorimétrique de l'image. À l'aide d'un programme de sélection de couleurs, l'utilisation de la fonction de conversion des couleurs dans OpenCV et certaines précautions sont expliquées.

1. Plusieurs espaces colorimétriques courants :

Espace colorimétrique RVB : RVB utilise la méthode de mélange additif des couleurs, car il décrit le rapport des différentes « lumières » pour produire des couleurs. Dès l’obscurité, la lumière se superpose continuellement pour produire de la couleur. RVB décrit les valeurs de la lumière rouge, verte et bleue. Le stockage d'images numériques utilise généralement le mode RVB. Il convient de noter que l'ordre de stockage des trois canaux dans OpenCV est BGR.

HSV, HSI : Ces deux formats de couleurs sont définis en fonction de la distinction faite par l'œil humain entre les couleurs, où H (teinte) représente la teinte, S (saturation) représente la saturation et V (valeur) représente la luminosité, I ( intensité) représente la luminosité.

Espace Lab : Les changements uniformes dans le modèle correspondent à des changements uniformes dans la couleur perçue, nous pouvons donc imaginer Lab comme un point dans l'espace colorimétrique. Plus les points adjacents sont proches, plus ils sont proches les uns des autres. Plus l'espace du laboratoire est proche, plus il est souvent utilisé pour mesurer la similitude de deux couleurs.

Pour plus d'informations sur l'espace colorimétrique, veuillez vous référer à : http://en.wikipedia.org/wiki/Color_space

2 Conversion de l'espace colorimétrique dans OpenCV

Dans. OpenCV La conversion des couleurs de l'image s'effectue via la fonction cvtColor. cvtColor est définie dans le fichier d'en-tête opencv2/imgproc/imgproc.hpp. Son interface C est la suivante :

void cvtColor. ( InputArray src, OutputArray dst, int code, int dstCn=0 )

src : image d'entrée.

dst : Image de sortie.

code : Type de conversion de couleur, tel que : CV_BGR2Lab, CV_BGR2HSV, CV_HSV2BGR, CV_BGR2RGB.

dstCn : Le numéro de canal de l'image de sortie. Si la valeur par défaut est 0, cela signifie le nombre de canaux de l'image d'entrée.

Convertir l'image de BGR en Lab : cvtColor(image,image,CV_BGR2Lab)

3. Programme de baguette magique simple

Nous définissons d'abord une classe colorDetect :

class colorDetect{private:    int minDist; //minium acceptable distance    Vec3b target;//target color;    
    Mat result; //the resultpublic:
    colorDetect();    void SetMinDistance(int dist);    void SetTargetColor(uchar red,uchar green,uchar blue);    void SetTargetColor(Vec3b color); //set the target color    Mat process(const Mat& image); //main process};
Copier après la connexion
Le minDist est le seuil que nous avons défini pour limiter la distance entre deux couleurs, qui équivaut au seuil de l'outil baguette magique dans PhotoShop.

target est la couleur cible, qui est équivalente à la couleur de la graine. result est le résultat obtenu par le traitement de stockage.

Le processus est le programme de traitement principal. Examinons le contenu du processus.

Mat colorDetect::process(const Mat& image)
{    Mat ImageLab=image.clone();
    result.create(image.rows,image.cols,CV_8U);    
    //将image转换为Lab格式存储在ImageLab中    
    cvtColor(image,ImageLab,CV_BGR2Lab);    
    //将目标颜色由BGR转换为Lab    
    Mat temp(1,1,CV_8UC3);
    temp.at<Vec3b>(0,0)=target;//创建了一张1*1的临时图像并用目标颜色填充    
    cvtColor(temp,temp,CV_BGR2Lab);
    target=temp.at<Vec3b>(0,0);//再从临时图像的Lab格式中取出目标颜色

    // 创建处理用的迭代器    
    Mat_<Vec3b>::iterator it=ImageLab.begin<Vec3b>();    
    Mat_<Vec3b>::iterator itend=ImageLab.end<Vec3b>();    
    Mat_<uchar>::iterator itout=result.begin<uchar>();    
    while(it!=itend)
    {        
    //两个颜色值之间距离的计算        
    int dist=static_cast<int>(norm<int,3>(Vec3i((*it)[0]-target[0],
            (*it)[1]-target[1],(*it)[2]-target[2])));        
            if(dist<minDist)
            (*itout)=255;        
            else            
            (*itout)=0;
        it++;
        itout++;
    }    return result;
}
Copier après la connexion


Il y a deux points qui nécessitent une attention particulière dans le programme :

1 Après avoir converti l'image en espace Lab, la couleur cible également. doit être converti, l’approche consiste à créer une image temporaire.

2. La fonction norm est utilisée pour déterminer la distance entre deux couleurs. Son fonctionnement est norm(v). où v est un vecteur de faible dimension. Dans le programme, il s'agit d'une quantité tridimensionnelle appropriée, qui résulte de la soustraction de deux valeurs de couleur.

La chose à laquelle il convient de réfléchir est de savoir si Vec3i((*it)[0]-target[0],(*it)[1]-target[1],(*it)[2]- Quoi à propos du remplacement de target[2]) par Vec3i((*it)-target) ? La réponse est non, car (*it)-target restreindra automatiquement le type de résultat de soustraction pendant l'opération réelle.

Après avoir défini la couleur cible et le seuil comme ceci, nous pouvons obtenir un exemple d'effet :

cdet.SetTargetColor(150,150,150);

cdet.SetMinDistance(50);

La route vers la croissance dOpenCV (3) : imiter loutil baguette magique dans PhotoShop

Pour plus de chemin de croissance OpenCV (3) : imitant l'outil baguette magique dans PhotoShop, veuillez faire attention au site Web PHP chinois pour les articles connexes !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser Photoshop pour créer des graphiques sur les réseaux sociaux? Comment utiliser Photoshop pour créer des graphiques sur les réseaux sociaux? Mar 18, 2025 pm 01:41 PM

L'article détaille à l'aide de Photoshop pour les graphiques des médias sociaux, couvrant la configuration, les outils de conception et les techniques d'optimisation. Il met l'accent sur l'efficacité et la qualité de la création graphique.

Comment préparer des images pour le Web à l'aide de Photoshop (optimiser la taille du fichier, la résolution)? Comment préparer des images pour le Web à l'aide de Photoshop (optimiser la taille du fichier, la résolution)? Mar 18, 2025 pm 01:35 PM

L'article discute de l'optimisation des images pour le Web à l'aide de Photoshop, en se concentrant sur la taille et la résolution des fichiers. Le principal problème est d'équilibrer la qualité et les temps de chargement.

Quelle est la raison pour laquelle PS continue de montrer le chargement? Quelle est la raison pour laquelle PS continue de montrer le chargement? Apr 06, 2025 pm 06:39 PM

Les problèmes de «chargement» PS sont causés par des problèmes d'accès aux ressources ou de traitement: la vitesse de lecture du disque dur est lente ou mauvaise: utilisez Crystaldiskinfo pour vérifier la santé du disque dur et remplacer le disque dur problématique. Mémoire insuffisante: améliorez la mémoire pour répondre aux besoins de PS pour les images à haute résolution et le traitement complexe de couche. Les pilotes de la carte graphique sont obsolètes ou corrompues: mettez à jour les pilotes pour optimiser la communication entre le PS et la carte graphique. Les chemins de fichier sont trop longs ou les noms de fichiers ont des caractères spéciaux: utilisez des chemins courts et évitez les caractères spéciaux. Problème du PS: réinstaller ou réparer le programme d'installation PS.

Quelles sont les questions courantes sur l'exportation du PDF sur PS Quelles sont les questions courantes sur l'exportation du PDF sur PS Apr 06, 2025 pm 04:51 PM

Questions et solutions fréquemment posées lors de l'exportation de PS en PDF: Problèmes d'intégration de la police: vérifiez l'option "Font", sélectionnez "intégrer" ou convertissez la police en courbe (chemin). Problème de déviation de couleur: convertir le fichier en mode CMYK et ajuster la couleur; L'exporter directement avec RVB nécessite une préparation psychologique pour l'aperçu et l'écart des couleurs. Problèmes de résolution et de taille des fichiers: choisissez la résolution en fonction des conditions réelles ou utilisez l'option de compression pour optimiser la taille du fichier. Problème d'effets spéciaux: fusionnez (aplatir) les couches avant de l'exportation, ou pesez les avantages et les inconvénients.

Comment préparer des images pour l'impression à l'aide de Photoshop (résolution, profils de couleurs)? Comment préparer des images pour l'impression à l'aide de Photoshop (résolution, profils de couleurs)? Mar 18, 2025 pm 01:36 PM

L'article guide la préparation d'images à l'impression dans Photoshop, en se concentrant sur la résolution, les profils de couleurs et la netteté. Il fait valoir que les profils de 300 PPI et CMYK sont essentiels pour les impressions de qualité.

Comment utiliser les capacités d'édition vidéo de Photoshop? Comment utiliser les capacités d'édition vidéo de Photoshop? Mar 18, 2025 pm 01:37 PM

L'article explique comment utiliser Photoshop pour l'édition vidéo, détaillant les étapes pour importer, modifier et exporter des vidéos et mettre en évidence les fonctionnalités clés telles que le panneau de chronologie, les couches vidéo et les effets.

Comment créer des GIF animés dans Photoshop? Comment créer des GIF animés dans Photoshop? Mar 18, 2025 pm 01:38 PM

L'article discute de la création et de l'optimisation des GIF animés dans Photoshop, y compris l'ajout de trames aux GIF existants. L'accent principal est de l'équilibre entre la qualité et la taille du fichier.

Comment définir la protection des mots de passe pour l'exportation PDF sur PS Comment définir la protection des mots de passe pour l'exportation PDF sur PS Apr 06, 2025 pm 04:45 PM

Exporter PDF protégé par mot de passe dans Photoshop: ouvrez le fichier image. Cliquez sur "Fichier" & gt; "Export" & gt; "Exporter en PDF". Définissez l'option "Sécurité" et entrez le même mot de passe deux fois. Cliquez sur "Exporter" pour générer un fichier PDF.

See all articles