Python OpenCV : maîtriser la vision par ordinateur avec 10 projets pratiques | Jayanta Sarkar | Skillshare
Recherche

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Python OpenCV : maîtriser la vision par ordinateur avec 10 projets pratiques

teacher avatar Jayanta Sarkar, full stack web developer and Python prog

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction du cours

      2:37

    • 2.

      Installer openCV dans notre machine locale

      3:07

    • 3.

      Lire des images et des vidéos en utilisant openCV

      13:24

    • 4.

      Redimensionner et rééchelonner les cadres

      8:58

    • 5.

      Dessiner différentes formes et mettre du texte sur l'image

      18:55

    • 6.

      Fonction importante dans un CV ouvert

      13:35

    • 7.

      Traduction d'images de CV ouvertes partie1

      6:36

    • 8.

      Rotation d'une image de CV ouverte partie2

      5:34

    • 9.

      Ouvrir le recadrage de la traduction d'images de CV partie 3

      6:22

    • 10.

      Détection de contour Opencv

      8:51

    • 11.

      Détection de contour Opencv partie 2

      7:49

    • 12.

      Espaces de couleurs

      12:23

    • 13.

      Canaux de couleur

      7:09

    • 14.

      Flou

      11:23

    • 15.

      Opérations BITWISE

      15:11

    • 16.

      Masquage

      7:49

    • 17.

      Histogramme d'image en niveaux de gris opencv

      11:51

    • 18.

      Histogramme d'image en couleur

      6:37

    • 19.

      Limiter l'openCV

      11:21

    • 20.

      Afficher les coordonnées des points sur lesquels on a cliqué sur l'image en utilisant Python OpenCV

      12:57

    • 21.

      Détection de points blancs et noirs avec OpenCV

      16:02

    • 22.

      Dessiner des formes rectangulaires et extraire des objets

      26:35

    • 23.

      Détection et extraction de texte en utilisant OpenCV et OCR

      13:44

    • 24.

      T-shirt invisible utilisant OpenCV

      29:22

    • 25.

      Soustraction d'arrière-plan – OpenCV

      15:09

    • 26.

      Détection de visage en Python et OpenCV avec webcam

      15:19

    • 27.

      Détecter des objets de couleur similaire dans Python en utilisant OpenCV

      20:35

    • 28.

      Importer des modules et configurer un objet mediapipe

      6:44

    • 29.

      Créer une fonction de compteur à doigts

      11:03

    • 30.

      Créer la boucle principale et exécuter le projet

      10:36

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

17

apprenants

--

projet

À propos de ce cours

Description du cours :

Libérez la puissance de la vision par ordinateur avec OpenCV dans Python ! Ce cours complet est conçu pour guider les débutants et les apprenants de niveau intermédiaire dans les bases d'OpenCV, une bibliothèque standard dans l'industrie pour la vision par ordinateur et le traitement d'images. Avec 10 projets pratiques passionnants, vous apprendrez à analyser, manipuler et améliorer des images et des vidéos, transformant des concepts abstraits en applications réelles.

De la reconnaissance d'images au filtrage avancé, au suivi d'objets et même à la manipulation de vidéos en direct, chaque module est rempli de projets qui renforcent l'apprentissage et la compréhension pratique. Grâce à des tutoriels clairs et détaillés et à des exercices attrayants, vous acquerrez les compétences nécessaires pour relever un large éventail de défis en vision par ordinateur en toute confiance.

Ce que vous allez apprendre :

  • Les bases du traitement d'images et de vidéos : comprendre les concepts et méthodes de base pour la manipulation d'images.
  • Fonctions de base d'OpenCV : maîtriser les fonctions essentielles d'OpenCV pour transformer des images et des vidéos.
  • Applications de vision par ordinateur : explorer les applications réelles, notamment la détection de bords, la reconnaissance d'objets et le suivi de mouvement.
  • 10 projets pratiques : créer et réaliser des projets uniques qui rendent l'apprentissage à la fois pratique et amusant.
  • Traitement vidéo en direct : apprendre à appliquer les techniques OpenCV dans des flux vidéo en direct pour créer des applications interactives.

À la fin de ce cours, vous disposerez de la confiance et des compétences nécessaires pour créer vos propres projets de vision par ordinateur et appliquer vos connaissances dans OpenCV dans des domaines tels que l'automatisation, l'IA et la réalité augmentée.

Que vous soyez programmeur, ingénieur ou passionné, ce cours vous mènera des bases de Python OpenCV aux techniques de vision avancées. Rejoignez-nous dans ce voyage pour maîtriser la vision par ordinateur avec Python et OpenCV !

Rencontrez votre enseignant·e

Teacher Profile Image

Jayanta Sarkar

full stack web developer and Python prog

Enseignant·e

Jayanta Sarkar is a dedicated Python programmer and full-stack web developer with a passion for creating dynamic and interactive web applications. With a robust background in both front-end and back-end development, Jayanta excels in building seamless user experiences and efficient, scalable systems.

Over the years, Jayanta has honed his skills in various programming languages and frameworks, making him proficient in technologies such as JavaScript, CSS, HTML, and MySQL. His expertise extends to developing comprehensive solutions that integrate sophisticated database management with intuitive user interfaces.

Jayanta's journey in the tech industry is marked by a continuous drive to learn and adapt to new technologies. He has developed and published several successful cours... Voir le profil complet

Level: All Levels

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction du cours: Bonjour. Bienvenue dans notre cours Python Open City Mastering Computer Vision Je m'appelle John the Shortcut. Je suis développeur Web FOSTEC, programmeur Python chez Online Instructor, et je vais vous guider tout au long du Je suis ravie de vous guider dans ce voyage dans le monde de la vision par ordinateur et du traitement d'image. Dans ce cours, nous aborderons en profondeur l'Open C, la bibliothèque standard du secteur qui apporte la magie de la vision par ordinateur à Python. À la fin de ce cours, vous aurez non seulement compris les principes fondamentaux d'OpenCV, mais vous aurez également acquis des compétences pratiques que vous pourrez appliquer immédiatement grâce à notre projet en dix étapes pratiques Voyons maintenant ce que nous allons apprendre exactement à partir de là. Nous allons commencer par les bases. abord, nous allons apprendre comment installer OpenCV sur notre machine locale Ensuite, nous allons lire l'image, redimensionner et redimensionner les cadres Nous allons dessiner une forme différente et mettre du texte sur l'image. Ensuite, nous allons apprendre les fonctions importantes. Ensuite, nous allons apprendre la transition, la rotation, la translation, la détection des conduits. Espaces colorimétriques, canaux colorimétriques, flou, opération Btis, masquage, histogramme en niveaux de gris, histogramme d'image en couleur et seuillage Après avoir appris tous les concepts de base, nous allons passer à la section du projet. Nous allons mener plusieurs projets du monde réel, tels que la détection et l'extraction de texte à l'aide d' OpenCV, le dessin d'un rectangle et l'extraction d'un objet, points noirs et de points blancs Cette épingle se coordonne lorsque nous cliquons sur l'image. Ensuite, nous allons passer à la partie la plus importante, qui est le projet de t-shirt invisible, la soustraction en arrière-plan, la détection de phase à l'aide Nous allons également contacter un autre projet détectant des objets de couleur similaire en Python. Et ce n'est pas la fin. De temps en temps, nous allons mettre à jour cette classe et y ajouter de nouveaux projets, tels que la détection des doigts, la détection des yeux, contrôle de la luminosité à l'aide des doigts et bien d'autres. Chaque semaine, je vais y ajouter un nouveau concept. À la fin de ce cours, vous aurez les compétences nécessaires pour créer vos propres projets de vision par ordinateur et automatiser vos tâches. Après ce cours, vous pourrez explorer des domaines tels que l'IA et la réalité argumentée. Alors, qu'est-ce que tu attends ? Commençons ensemble. 2. Installer openCV dans notre machine locale: Bonjour, il s'agit du premier cours Python OpenCV lié au didacticiel Python OpenCV lié au Enfer. Je m'appelle John Shoker. J'héberge un développeur web et j'enseigne en ligne. Nous allons commencer le didacticiel en installant OpenCV sur notre ordinateur local Passons donc à l'écran de l'ordinateur. Comme vous pouvez le voir, nous sommes sur l'écran de mon ordinateur et j'ouvre Windows Power Shel OpenCV est essentiellement une bibliothèque de vision par ordinateur. Il est disponible en langage Python, C plus plus et Java. La vision par ordinateur est une application d'apprentissage profond. Et il se concentre principalement sur les fichiers multimédias. Il peut s'agir d'images, sinon de fichiers vidéo. Je suppose que Python est déjà installé sur votre ordinateur. Et pour vérifier s'il est installé sur votre ordinateur local ou non, tapez simplement Python space Virgin. Appuyez ensuite sur Entrée. Après avoir appuyé sur Enter ASimCC, il renvoie version 3.11 0.4 de Python Assurez-vous simplement que vous disposez de la dernière version de Python, sinon supérieure à 3.7. J'espère donc que Python est déjà installé sur votre ordinateur. Mais maintenant, je vais installer les packages requis pour ce cours. Je vais donc installer notre package principal OpenCV pour installer OpenCV dans votre système, juste pour P, installez OpenCV Ctrip. Dash Python. Parfois, les gens peuvent vous dire que vous n'avez qu' télécharger OpenCV Dash Python En gros, Opens dash Python est le package principal. C'est le module principal, mais Opensi Ctrip contenait un module principal qui contient des modules de contribution, fournis par la communauté Je vais donc appuyer sur Entrée et attendre le téléchargement. Comme vous pouvez le constater, l'exigence est déjà satisfaite. J'ai déjà téléchargé ce module, mais vous devez terminer le processus de téléchargement. Avec cela, je vais également mettre à jour ma version P. Je vais donc copier cette commande et la coller ici. Ensuite, je vais appuyer sur Entrée. Cela va mettre à jour mon code PIN. J'ai donc réussi à mettre à jour ma version P. Mais si vous remarquez, vous pouvez voir lorsque j'essaie de télécharger OpenCV, il télécharge également l'avertissement Numpie Numbi est une sorte d'empaquetage de calculs scientifiques en Python. Il utilise largement la matrice, la manipulation, etc. Peut-être devons-nous utiliser Numpy dans certains de ces didacticiels, mais ne vous inquiétez pas, car il est simple et relativement facile à démarrer C'est donc tout pour ce tutoriel. Dans ce tutoriel, je vous montre simplement comment télécharger Open C. Dans le prochain tutoriel, nous allons apprendre comment lire des images et des vidéos à l'aide d'OpenC Merci donc d' avoir regardé cette vidéo, restez à l'affût de ce tutoriel. 3. Lire des images et des vidéos en utilisant openCV: Salut, tout le monde. Bienvenue dans un autre domaine. Dans cette vidéo, nous allons apprendre comment lire images et des vidéos à l'aide de Python Open Cit. Passons donc à l'éditeur de code isa Studio. Comme vous pouvez le voir, j'ouvre ici mon éditeur de code Visa Studio. Et sur le site web, vous pouvez voir que c'est mon travail actuel. premier temps, dans mon répertoire de travail actuel, je vais créer un Python 5, et je vais le nommer main point py main point py. Dans la première moitié de la vidéo, nous allons parler de la façon dont nous pouvons lire les images. Ensuite, nous allons parler de la façon dont nous pouvons lire des vidéos. Donc, dans un premier temps, dans notre fichier Python, nous devons importer OpenCV, donc taper, importer le CV deux en C. Et pour lire une image dans OpenCV, nous devons utiliser du meth imagé, nous devons taper cd point Image R. IMR nous devons importer OpenCV, donc taper, importer le CV deux en C. Et pour lire une image dans OpenCV, nous devons utiliser du meth imagé, nous devons taper cd point Image R. IMR. Ensuite, dans les rondes du devis, nous devons fournir le chemin du fichier. Comme vous pouvez le voir dans mon répertoire de travail, il existe un autre dossier nommé images. Et si je l'ouvre, vous pouvez voir ici que nous devons appuyer sur deux images, chat un point JPG cat point JPG. Donc dans un premier temps, je vais lire cat dot JPG. Donc, dans la citation, je vais d'abord étiqueter le nom du dossier Images. Images slash Je vais cibler l'image, cat point JPG De plus, je veux capturer cette image dans une variable, et notre aria est ING. ING est égal à la fonction racine de l'image à points Cv. Maintenant, une fois que nous avons lu cette image, nous devons montrer cette image. Pour afficher cette image, nous devons utiliser une méthode, qui est image show, type cv point image show. Dans l'émission. Ensuite, insérez les presses rondes, vous devez passer au total deux paramètres Cette méthode va afficher l'image dans une nouvelle fenêtre. Donc, d'abord, nous devons fournir le nom de la nouvelle fenêtre, et l'hémotype le Ensuite, nous devons transmettre la matrice, l'image que nous lisons. Je vais donc taper IMG, cette variable, et je vais définir cet endroit. Maintenant, je veux exécuter une fonction de liaison clavier avant d'exécuter cette portée car ici nous avons besoin d'un d spécifique, je vais donc appeler une autre méthode, connue sous le nom de touche humide. Clé humide Swing Dot. Celui-ci. Et à la place des presses rondes, je vais passer Z. Il s'agit d'une fonction de reliure du clavier C'est attendre des informations spécifiques. Jusqu'à ce que j'appuie sur n'importe quelle touche du clavier Mil. Si je passe zéro, ça va attendre une infinité de temps. En gros, je veux dire que tant que je n' appuierai pas sur une touche de notre clavier, l'image ne sera pas supprimée. Exécutons le code dans notre terminal. Je vais donc définir le fichier et après l'avoir défini, je vais appuyer sur le bouton Exécuter. Après avoir appuyé sur le bouton Exécuter, comme vous pouvez le voir, l' image est renvoyée. Ici, il ouvre une fenêtre et affiche l'image dans cette fenêtre. Et si vous voulez supprimer cette fenêtre, vous pouvez louer n'importe quelle touche de votre clavier. Sinon, vous pouvez cliquer sur cette icône de fermeture. Je vais donc faire l' éloge de Space Key. Donc, comme vous pouvez le voir, ça tue la fenêtre. C'est cool. Maintenant, l'image que j'ouvre depuis mon répertoire de travail actuel est une image de petite résolution. Laisse-moi te montrer. Comme vous pouvez le voir dans mon répertoire de travail actuel, il y a deux images. Obtenez un JPG à un point et passez au JPG à point. Les deux images sont identiques, mais leur résolution est différente. Si je vous montre le JPG à points G, vous pouvez maintenant voir que sa dimension est 604 13. Mais si je passe mon curseur et que j' obtiens un point JPG, vous pouvez maintenant voir que sa dimension est beaucoup plus grande que celle du précédent C'est 5 026 x 3 458. Maintenant, je vais ouvrir la même image de chat, mais cette fois, je vais ouvrir la version plus grande. Passons donc au code de Salt Studio. Je vais changer le nom de l'image. Je vais en faire un point GPG, et je vais découper ce fichier, et je vais exécuter ce code Et je vais appuyer sur le bouton Exécuter. Après avoir appuyé sur le bouton Exécuter, comme vous pouvez le voir, l'image disparaît de l'écran. Je vais donc fermer cette image en appuyant sur n'importe quelle touche de mon clavier. Je vais appuyer sur B. Après avoir appuyé sur B, la fenêtre s'éteint. Cette image est beaucoup plus grande que la résolution de mon écran. Actuellement, nous n'avons évidemment aucune technique de redimensionnement intégrée qui fonctionne en technique de redimensionnement intégrée qui fonction de la résolution de l' ordinateur, mais nous pouvons redimensionner l' Dans le prochain tutoriel, je vais en parler. Donc, si vous avez une grande image, elle peut éventuellement passer hors écran. Dans ce didacticiel, concentrez-vous uniquement sur la lecture d'images et de vidéos. C'est donc pour lire des images. Maintenant, concentrons-nous sur la façon dont nous pouvons lire les vidéos. Mais avant, je vais sélectionner tout le code et je le copie. Ensuite, je vais créer une autre amende dans mon répertoire de travail, qui est main à deux points Pine. Et je vais coller tout le code de mon amende précédente. Cette fois, nous allons lire la vidéo 5. Donc, dans un premier temps, je vais commenter ces lignes. Je n'en ai pas besoin pour le moment. Maintenant, voici pourquoi je vous montre mon répertoire de travail actuel, il y a un autre dossier nommé Videos. Si je l'ouvre, il y a une vidéo, video one.nb4. Et pour lire une vidéo, je vais créer ici une capture variable. Comme ici, je vais utiliser la méthode de capture vidéo. Cv point, capture vidéo Tone. Et des cartouches. Cette méthode prend soit valeur Iuser comme un, deux, trois Sinon, nous pouvons transmettre un chemin de fichier. Maintenant, vous pourriez expliquer pourquoi nous devons transmettre la valeur du diesel. Parce qu'en utilisant une valeur entière, vous pouvez vous connecter à votre webcam. Si vous avez une webcam, vous pouvez passer à zéro. Dans la plupart des cas, vous faites référence à Webkem par zéro entier. Si vous en avez plusieurs, vous pouvez modifier le numéro. Mais avant, dans un premier temps, je vais lire la vidéo existante à partir de notre chemin de fichier. J'ai dit la seule citation. abord, nous devons fournir le nom du dossier, certains types de vidéos, puis dans ce dossier de vidéos, nous avons cette vidéo. Alors Intro, sélectionnez la vidéo one.b4. N'oubliez pas que la lecture de vidéos est différente de la lecture d'images. Nous devons lire les vidéos image par image. C'est pourquoi nous devons utiliser Hilo. Donc ici, je vais utiliser Hilo. C'est fou, c'est vrai. Ensuite, à l'intérieur de la boucle While se trouve Crew Comma, image égale à la fonction de lecture par points de capture Fonction de lecture par points de capture. Cette fonction de lecture par points de capture va lire cette vidéo image par image. Il lit le cadre et cette valeur wollen indiquera si c'est un succès, vous travaillez ou non Pour afficher la vidéo, nous affichons en fait les images individuelles. Donc, après avoir lu chaque image de cette vidéo, nous devons afficher les images. Pour afficher ces cadres, nous allons utiliser la fonction d' affichage d'image. Donc, tapez Cv point image show is the round presses, comme vous le savez, nous devons d'abord passer un nom de fenêtre, qui est vidéo. Ensuite, je vais passer les images réelles. Je dois donc passer ce cadre variable. Copiez donc le nom de la variable, et je vais le coller ici. Pour l'instant, je n'ai pas besoin de cette fonction de touche humide, je vais donc la supprimer. Oui, nous avons besoin d'une clé humide, mais nous allons l' utiliser avec la condition p. Donc son type, I V point wet key, à l'intérieur de la rondeur maintenue passe double et zéro X F égal, égal à b, à l'intérieur du rond RessSOD de B, alors ça va vous tuer Ensuite, dans la condition IP, je veux rompre cette boucle VI. Une fois que nous avons terminé la boucle I, nous devons relâcher le pointeur de capture. Nous devons donc utiliser les fonctions de libération sur le type Dot capturé, la fonction de libération, la libération. Nous devons également détruire toutes les fenêtres. Il attache, CV, point, détruit toutes les fenêtres. Celui-ci. C'est ça. Récapitulez maintenant le port. La variable de capture est une instance de brillance de capture vidéo. Ensuite, à la place de la boucle unique, nous lisons la vidéo image par image. Ensuite, nous avons affiché chaque image en utilisant la méthode IMS. Si CVD 820 et zéro xFF sont égaux à org, D, alors interrompez la charge Donc, si j'appuie sur B, les images vidéo ne seront plus affichées. En gros, je veux dire que si j'appuie sur D, cela va casser la charge. Ensuite, nous libérons le périphérique de capture et détruisons toutes les fenêtres. Maintenant, configurons le fichier et exécutons le code. Une fois que j'ai exécuté ce code, comme vous pouvez le voir, il joue notre vidéo. Et si je fais l'éloge de D, cela ferme notre fenêtre. Maintenant, si vous voulez ouvrir votre webcam, oui, vous le pouvez. Commencez simplement cette ligne , commentez la précédente et modifiez la vidéo de capture vidéo. Je veux utiliser zéro car je n'ai qu'une seule caméra connectée à mon ordinateur. Après l'étape de ce fichier, si j' exécute ce code et que j'attends quelques étapes, vous pouvez maintenant capturer directement votre vidéo à l'aide d' OpenCV et vous pouvez la lire Donc, si vous souhaitez fermer cette fenêtre, il vous suffit d' appuyer sur la commande B. Si vous appuyez sur une autre touche, cela ne fermera pas votre fenêtre. Dans notre état, nous disons ici, D, qu'est-ce qui va rompre la boucle ? Maintenant, laissez-moi vous montrer une chose importante. Donc d'abord, je vais tuer mon terminal, puis je vais commenter cette ligne et décommenter celle-ci Et je vais sous-traiter ce fichier. Après avoir configuré ce fichier, je vais réexécuter cette vidéo. Cette fois, vous remarquerez qu'une fois la vidéo terminée, une erreur s'affichera dans notre terminal. Donc, au bout de 10 secondes, après avoir terminé la vidéo, comme vous pouvez le voir sur mon terminal, il y a un héros. Cela veut dire que lorsque notre vidéo est terminée, sinon arrêtée, elle montre le héros. S'il n'y a pas d'image dans cette vidéo, elle peut renvoyer le héros. Plus précisément, il renvoie cette erreur moins 215 sensations d'assertion. Cela signifie évidemment que je n' ai trouvé aucun fichier multimédia à cet endroit. Il va également renvoyer le même type d'erreur avec l'image. Laisse-moi te montrer. Je vais donc tuer mon terminal et revenir au fichier point Pi principal. Si je change le chemin du fichier, si je le place en catégorie trois, comme vous le savez, il n'y a aucun fichier disponible dans notre répertoire cd trois. Si je définis ce fichier et que j'exécute cette commande, comme vous pouvez le voir sur mon terminal, cela correspond à la même erreur, assertion négative 215 s'estompe. Cela affiche exactement la même erreur qu'une vidéo. Il n'a trouvé aucun cadre. C'est donc tout à fait pour cette vidéo. Dans ce tutoriel, nous apprenons comment lire une image. Nous apprenons également comment lire des vidéos. Avec cela, nous apprenons également comment lire des vidéos via notre webcam. Voilà pour ce tutoriel. Dans le prochain didacticiel, nous allons apprendre comment et redimensionner n'importe quel cadre Il peut s'agir d'une image, sinon d'une vidéo. Merci donc d' avoir regardé cette vidéo Stune pour le prochain tutoriel 4. Redimensionner et redimensionner les cadres: Salut, les gars, c'est bon de vous revoir. Encore une fois, je suis de retour avec un autre tutoriel lié à l'open ct. Et dans ce tutoriel, nous allons apprendre à redimensionner et à redimensionner Comme vous pouvez le constater, nous passons à l'éditeur de code User Studio. Dans cette section, nous allons apprendre comment redimensionner et redimensionner des vidéos et images en utilisant Open C. Pour redimensionner une image vidéo ou une image, nous devons créer une fonction, dont le nom est Dave ScalFrame nous devons créer une fonction, nom est Dave Ensuite, à l'intérieur du rond moins, nous devons passer un paramètre, cadre à la taille V et l'échelle sera redimensionnée. Comme ici, nous devons transmettre la valeur d'échelle, montant que nous voulons mettre à l'échelle. Pour l'instant, je vais définir 0,75. Ensuite, dans la fonction rescal, je vais définir W égal à la forme du point du cadre, au lieu du ss au carré, je vais en transmettre un Ensuite, je vais multiplier avec l'échelle. Ensuite, je vais dupliquer cette ligne et la remplacer par par la hauteur. Et à l'intérieur du carré, contre zéro. La forme du point du cadre 1, en gros, avec votre image et la forme du point du cadre zéro, spécifiez la hauteur. Et comme vous le savez, la largeur et la hauteur sont des indices, nous devons donc les convertir en index. Je vais utiliser la fonction int. Cela, et nous devons utiliser le rond*** cela fera également la même chose pour hauteur en laiton rond. Et maintenant je vais déclarer une variable appelée dimension. Dimension égale à, et je veux créer un tuple. Donc, au lieu des rondes, je vais passer le coma, et notre prochaine valeur est la hauteur. Et ensuite, je vais renvoyer la fonction de redimensionnement des points v. Je vais donc retourner return, Cv point, redimensionner. À l'intérieur de la presse à courir , je vais d' abord passer le cadre. Ensuite, je vais passer la dimension. Valeur d'intervirgule égale au point Cv Enter area Entrez dans la zone. Le redimensionnement des points CIV est une fonction CI ouverte. Il est utilisé pour redimensionner une image, et le cadre est notre image, ce que nous voulons redimensionner Et la dimension spécifie la nouvelle taille de l'image, et ce devrait être un tepel qui représentera la hauteur et la largeur Et ce paramètre indique la méthode d'interpolation utilisée pour redimensionner l'image La méthode d'interpolation détermine la façon dont les valeurs des pixels sont calculées lorsqu'une image est redimensionnée zone CVI Enter est une méthode d' interpolation spécifique, optimisée pour réduire les images. Cela peut se traduire par une meilleure qualité que autres méthodes lors de la réduction de la taille de l'image. Ne t'inquiète pas. Nous en apprendrons davantage à ce sujet plus tard. Maintenant, je veux lire une vidéo cinq, donc je n'ai pas besoin de celle-ci. Donc, pour révoquer celui-ci et revenir au point Pi cinq. À partir de cette section, je vais copier cette partie. Et revenons à redimensionner le point Pi 5, et je vais le coller ici Pour l'instant, je n'ai pas besoin de cette ligne car je ne veux pas utiliser ma webcam. Maintenant, après avoir lu ce cadre dans notre VLU, je souhaite le redimensionner Nous allons donc appeler cette fonction. Mais avant, je vais déclarer une variable, et le nom de notre variable est frame resize Cadre sous format SCO redimensionné. Égal à, je vais appeler cette fonction, redimensionner le cadre. Je copie donc le nom de la fonction et je vais le coller ici, puis dans les robes rondes et dans les presses rondes, nous devons passer ce cadre variable. Ensuite, nous devons montrer cette variable en utilisant la méthode d'affichage d'image. Je vais donc dupliquer cette ligne. Et d'abord, je vais nommer cette fenêtre, qui est redimensionnée en vidéo Ensuite, nous devons transmettre la variable de redimensionnement du cadre. Je copie donc cette variable et je réprime le cadre avec elle. Et je vais configurer ce fichier. Et avant d'exécuter ce code, je vais supprimer ces deux lignes. Je n'en ai plus besoin. Sinon, je peux commenter celui-ci. Et je vais reconfigurer ce fichier. Après avoir défini ce fichier, si j'exécute cette commande, il en ouvrira au total deux dans. Tout d'abord, il va ouvrir la fenêtre d'origine, puis il va ouvrir la fenêtre redimensionnée Laissez-moi vous le prouver. Donc, après avoir défini ce fichier, si j'exécute ce code dans mon terminal, comme vous pouvez le voir, il ouvrira au total deux fenêtres. Il s'agit de la fenêtre d'origine en haute résolution, et il s'agit de la fenêtre d' échelle basse résolution. C'est ainsi que cela fonctionne. Cette vidéo est redimensionnée de 0,75 %. Si vous souhaitez le réduire davantage, il vous suffit de réduire la valeur. Par défaut, cette fonction diminuera à chaque fois de 0,75 % Mais si vous souhaitez transmettre votre propre valeur, il vous suffit de passer une virgule et de fournir une échelle de 0,20 Et si j'exécute ce code, vous pouvez voir ici qu' il s'agit de notre taille d'origine, et que c'est la version décisive. Maintenant, il a été réduit de 20 %. Je vais donc faire l'éloge de D to D pour la fenêtre avant qu'elle ne soit à court de cadre. En utilisant la même fonction, vous pouvez redimensionner l'image Laissez-moi vous montrer comment nous pouvons redimensionner une image. Mais avant, je vais commenter ces lignes. Quelqu'un utilise un commentaire multiligne pour commenter toutes les lignes. Ensuite, je crée une variable, et le nom de notre variable est une image redimensionnée Souligner l'image. Resis imagée de la même manière qu' ici, je vais utiliser la fonction recess Je vais donc copier le nom de la fonction et appeler la fonction. Au lieu du processus circulaire, nous devons fournir l' image que je veux montrer. Je vais donc commenter à nouveau ces lignes, et je vais passer cette variable dans cette fonction. Image. Ensuite, je vais utiliser la fonction I'm Show. Je copie cette ligne et je la colle ici. Tout d'abord, je vais changer le nom de la fenêtre, qui est redimensionné asco C. Ensuite, je vais appeler cv point WetKeyFunction Clé Cv Dot Weit. À l'intérieur de la Rundress, je vais passer zéro. C'est ça. Avant de définir ce fichier et d'exécuter le code, je ne me suis pas trompé. Ici, nous devons transmettre cette variable. Image redimensionnée Et encore une fois, je vais configurer ce fichier et exécuter ce code. Pour exécuter ce code, comme vous pouvez le voir, il s'agit de la taille d'origine de cette image et de la version à l'échelle de cette image. Nous avons réduit la fenêtre d'image avec succès. Ainsi, en utilisant la même fonction, nous pouvons redimensionner les images. Nous pouvons également redimensionner les vidéos. N'oubliez pas que cette méthode fonctionne pour les images, les vidéos et les vidéos légères. Ainsi, en utilisant une seule fonction, vous pouvez faire tous les tics. Voilà pour ce tutoriel. Dans le prochain tutoriel, nous allons apprendre comment dessiner une forme à l'aide d'OpenCL 5. Dessiner différentes formes et mettre du texte sur l'image: Salut tout le monde, et bon retour sur Another ID. Dans ce tutoriel, je vais parler de la façon dont nous pouvons dessiner et écrire des images ? Passons donc à un éditeur de code de studio. Donc, dans un premier temps, je vais créer un fichier Python. Donc ici je vais taper, dessiner un point py. Ensuite, je vais importer nos bibliothèques. Dans un premier temps, je vais importer CV Import, CV 2 en tant que CV. Ensuite, je vais importer NumPi en tant que NP. Import, Num Pi, as N P. Vous pouvez également voir que j'ai déjà mis cette image dans mon fichier JPG wing dy cat actuel. Ensuite, je vais lire cette image en utilisant InRDFunction. Tapez donc ici la première variable hémocrative IMG égale à, je vais utiliser la lecture d'image par points C. Airad. Ensuite, les cuivres ronds, moi au devis. Nous devons fournir le chemin du fichier, CAT à deux points JPG. Ensuite, nous devons afficher cette image en utilisant la fonction I show. Je vais donc taper cv point image show IM, donc Is the RoundRef dont nous avons besoin pour attribuer un nom à cette fenêtre, qui est C. Ensuite, je vais passer la variable, qui est ING Ensuite, nous devons utiliser Wet kwatho v point wet key, Wet Key, et dans les presses rondes, je vais passer Z. Je vais définir ce fichier Il existe deux manières de dessiner sur des images. Vous pouvez dessiner n'importe quoi dans une image autonome comme celle-ci Vous pouvez également créer une image vierge. Je décide donc où créer une image vierge. Ici, tapez blank, égal à, je vais utiliser tt zéros Ensuite, les cuivres ronds, je vais adopter la résolution 500 par 500. De plus, nous devons le mettre dans un laiton rond. Je vais les passer du type D, du type plus gros. Paramètre de type B, D. C'est pour ce cours unique que je vais taper INT huit. Clôturez ensuite les courses rondes. Il s'agit du type de données d'une image. Et si vous voulez voir cette image, il vous suffit de taper cette commande. Vous pouvez afficher copy this command and hern pist et je vais remplacer at par ban Je souhaite également modifier la variable. J'en ai laissé deux vides, et je vais configurer ce fichier. Après avoir défini ce fichier, je vais lancer le scole. Je vais donc cliquer sur ce bouton Exécuter. Après avoir cliqué sur ce bouton d'exécution, comme vous pouvez le voir, vous pouvez maintenant le voir, maintenant vous avez tendance à deux fenêtres. Une fenêtre est une image KAT et une autre est une image vide. Et comme vous pouvez le constater, il s'agit d'une image au carré 500 x 500 pixels Donc, au lieu d'utiliser KAT Image, je vais dessiner mon objet dans cette image vide. Donc, ici, je vais commenter les lignes, ces deux lignes. Sinon, nous pouvons le supprimer. Pour l'instant, je vais faire un commentaire. Maintenant, dans un premier temps, je vais peindre cette image vierge dans une certaine couleur. Je vais donc taper une comande pour peindre l'image dans une certaine couleur Pour remplir l' image vide avec une nouvelle couleur, vous devez en passer une autre ici. Nous devons transmettre le canal de quatre couleurs à l'attribut. Nous allons utiliser le RGB à trois canaux de couleur. Nous pouvons maintenant utiliser la valeur de trois canaux de couleur. Donc, pour colorier l'image vide, tapez « blanc » pour la première fois, puis vous dites la touche carrée « je vais passer le codon C'est moi ou le pixel sur lequel je vais sélectionner tous les pixels. Ensuite, je veux le remplir de couleur verte. Je vais donc passer 0255, 255, zéro. Il va remplir cette image noire de couleur verte. Ensuite, nous devons exécuter la fonction d'affichage d'image. Donc, ici, pour taper un point, à mon humble avis , le runDerF pour fournir un nom, nous devons d'abord fournir un nom pour la fenêtre et je vais À la valeur suivante, nous devons transmettre la variable. Les chiens. Et je vais régler ça. Pour configurer ce fichier, si j'exécute cette commande, vous pouvez le voir avec deux fenêtres. C'est une fenêtre noire. Il s'agit de la fenêtre par défaut , et il s'agit de la nouvelle fenêtre dont le champ est vert. Et pour obtenir une couleur différente, il suffit de modifier les valeurs. Supposons que la main de passe zéro, virgule zéro, come up, 255. Je vais configurer ce fichier et exécuter ce code a. Pour exécuter ce code, vous pouvez maintenant voir un résultat différent. Cette fois, cette fenêtre était pleine de couleur rouge. Il utilise la technique du découpage pour sélectionner tous les pixels. De plus, si vous souhaitez remplir une certaine zone de couleur, oui, vous le pouvez, vous devez fournir le fichier du point de départ et du point final Supposons qu'à notre première vue, je passe 200 par 300. Ensuite, je vais passer les 300 à 400. Si je définis ce fichier et que j'exécute ce code, vous pouvez maintenant le voir dans un carré rouge à cette position. Voici donc comment nous pouvons remplir en recolorant. La prochaine chose que je vais faire, dessiner un rectangle. Donc, d'abord, je vais supprimer les deux lignes parce que je n'en ai pas besoin, puis je vais taper une seule commande. Je tape donc hashtag et je passe à dessiner un rectangle. Pour dessiner un rectangle, nous allons utiliser une méthode, qui est cv dot Rig tangle. Celui-ci. Et pour dessiner le rectangle en premier, il faut passer une image. Donc, à l'intérieur de la niche ronde, je vais passer au noir Et la fonction prend également plusieurs arguments. Image 0,1 0,2, couleur, épaisseur, et si vous souhaitez fournir le type de ligne, oui, vous le pouvez. Donc, pour le point de départ, à l'intérieur de la robe ronde, je vais passer zéro virgule zéro, et pour le point final, je vais passer 250 pixels par 50 pixels Ensuite, nous devons passer la couleur. Et pour la valeur de couleur, je vais passer 02550 Et ici aussi, nous devons passer l'épaisseur, type de soleil, l'épaisseur, et je vais passer l' épaisseur Vo deux. Et quand c'est fait, nous devons également montrer cette image. Je vais donc taper cv point image show IM, donc à l'intérieur des touches rondes, je vais d'abord passer un nom de fenêtre Je vais donc taper rectangle. Virgule. Passez ensuite l'image. Dans quelle image, je veux appliquer le rectangle, qui est noir. Celui-ci. Je vais configurer ce fichier. Après avoir défini ce fichier, si j'exécute ce code, vous pouvez voir le résultat. Maintenant, vous pouvez voir cette fenêtre dans cette fenêtre, elle dessine un rectangle. Mais vous remarquez que Harry crée un total de trois fenêtres parce que nous appelons trois fois la fonction d'affichage d'images. Donc, pour l'instant, je vais faire un commentaire. Donc, pour l'instant, je vais commenter cette ligne. Celui-ci aussi, je vais commenter celui-ci. Je n'en ai pas besoin. De plus, je ne m'étonne pas de la boîte carrée, alors je la commente. Donc, si je réexécute ce code, vous verrez le résultat. Il s'agit du rectangle que nous créons dans l'image vide. Et comme vous pouvez le voir, nous commençons ce rectangle à partir de la position d'origine. Et si je change la position d'origine, supposons 50 x 50. Ensuite, définissez ce fichier et réexécutez ce code , vous verrez le résultat. Maintenant, il faut partir de cette position. Et si vous voulez augmenter la hauteur de ce rectangle et utiliser la totalité de la hauteur de l'image, dans ce cas, il suffit de passer. Encore une fois, je vais commencer 0-0, et cette fois je vais passer 500 par 500 Et je vais configurer ce fichier. Après avoir défini ce fichier, je vais exécuter à nouveau ce code. Vous pouvez maintenant le voir recouvrir tout le cadre de l'image avec le rectangle. Et si vous souhaitez utiliser le hub de zone, il vous suffit de passer 250500 définir ce fichier et de supprimer cette fenêtre Après avoir défini ce fichier et exécuté ce code, vous pouvez voir le résultat. Vous pouvez donc définir la taille et la position de ce rectangle à partir de ce vétérinaire. Vous décidez maintenant de remplir ce rectangle de couleur. Pour cela, il suffit de modifier la valeur de l'épaisseur. Donc, dans un premier temps, je vais supprimer cette fenêtre, puis je vais modifier l'épaisseur, l'épaisseur étant égale au champ de points V. Donc, après avoir défini cette histoire, si j' exécute ce code, vous pouvez voir le résultat. Comme vous pouvez le voir, cette fois, je veux que le rectangle soit rempli de vert. Maintenant je vais te montrer quelque chose. Au lieu de transmettre ces valeurs, vous pouvez utiliser la forme. Vous pouvez utiliser une zone de forme exactement fade. Laisse-moi te montrer. Je vais donc dupliquer cette ligne et commenter la ligne précédente. Et cette fois, au lieu d'utiliser une valeur numérique, je vais utiliser une forme J'ai donc laissé le nom de l' image en blanc. Blanc, point, forme. Ensuite, l'intérieur du carré résiste, ici je vais en passer un. Ensuite, je vais diviser cette valeur par deux. Ensuite, je vais passer une virgule et je tape en forme de point vide Et à l'intérieur de cette résine carrée, je vais passer zéro, et je vais le diviser par deux Si je place cette diapositive et que j'exécute ce code, cela créera en gros une forme carrée car, comme vous pouvez le voir, voici 500 en hauteur et 500 en largeur. Et si on divise 500 par deux, on obtient 250. De plus, si nous divisons ces 500 par deux, encore une fois, cela donnera 215. Cela va donc créer un carré. En gros, nous allons réduire la forme. Donc, après avoir posé ce sol, si je dirige cette escouade, vous pouvez voir ici qu'il crée une forme carrée. Et sa hauteur est la moitié de la hauteur de l'image, et également la moitié de la largeur de l'image. De même, si je le divise par trois, puis que je crée ce fichier et que je lance le code, vous pouvez maintenant voir une forme différente. Cette fois, la hauteur est divisée par trois et la largeur de l'image par deux. C'est pourquoi il a créé une forme rectangulaire. En gros, je veux vous montrer qu'au lieu d' utiliser une valeur numérique exacte, vous pouvez utiliser la forme pour calculer la valeur Passons maintenant à la forme suivante. Dessinons un cercle. Ici, je vais taper un commentaire d'une seule ligne, et je vais taper dessiner un cercle. Et aussi, je vais commenter les lignes. Je n'en ai pas besoin. Pour créer un cercle, nous devons utiliser la méthode cv point circle, cv point circle. Et à l'intérieur des rondes, nous devons d'abord fournir l' image qui s'y trouve Ensuite, nous devons transmettre les coordonnées de la position centrale. Donc, dans les adresses rondes, pour l'instant, je vais passer la position médiane de cette image, qui est 25250 Ensuite, dans cette fonction, vous devez transmettre l'onde radiale. Et ici, je vais passer la valeur du rayon 40. Nous devons également fournir la couleur. Donc, à l'intérieur de la cavité ronde, je vais passer le 002 55, qui va revenir à la couleur rouge, BGR Ensuite, nous devons fournir l'épaisseur de cette bordure. épaisseur tellement serrée me faut une épaisseur tellement serrée et je vais passer trois ou trois pixels. Ensuite, nous devons afficher cette image. Donc Hemo type cv point image show I'm show. Ensuite, à l'intérieur du rond, les presses veulent d'abord transmettre le nom de la fenêtre et le nom de la fenêtre est un cercle. Et la fenêtre suivante que je vais passer est le nom de l'image qui s'y trouve. Et je vais configurer ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, c'est ce qu'il crée. Cela crée un cercle au centre de cette image. Et maintenant, si vous voulez remplir ce cercle, vous devez changer le viel d'épaisseur Mais cette fois, je vais utiliser un autre do. Au lieu d'utiliser le champ à points Cv, je vais utiliser ici moins un. Si je passe cette valeur, que je définis ce fichier et que je réexécute ce code, vous pouvez maintenant voir notre cercle rempli de couleur rouge. C'est donc une autre méthode que vous pouvez colmater avec de la couleur. Il vous suffit de passer la valeur d'épaisseur moins un. Vous pouvez également utiliser cv point fill it. Maintenant, je vais vous montrer comment tracer une ligne autonome en utilisant Open C. Je vais donc explorer cette fenêtre, et d'abord, je vais commenter les deux lignes Et là, je vais essayer de commenter, et je vais essayer de dessiner Hey, line. Pour créer la ligne, nous devons utiliser la méthode de la ligne de point v, la ligne de point cv. Ensuite, dans la robe ronde, nous devons d'abord passer l' image où devons-nous tracer la ligne, qui est noire. Et maintenant, nous devons passer devant les coordinateurs de cette ligne. Pour cela, je vais utiliser les mêmes valeurs. Je vais donc copier cette section et la coller. Je vais juste modifier la valeur de l' épaisseur de cette ligne. Ici, je vais passer la valeur d'épaisseur trois. De plus, je vais changer de couleur, et je vais utiliser la couleur blanche, entièrement blanche. Je vais donc passer les numéros 255255, 255. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Et avant de définir le fichier, j'exécute ce code, nous devons montrer cette image. Je vais donc copier cette section, la coller ici et je vais déchirer le cercle avec une ligne C'est-à-dire que j'ai défini ce fichier et j'ai exécuté le code. Après avoir exécuté ce code, vous pouvez voir le résultat. Voici donc la lumière que nous créons en utilisant Open Ceri. Et si vous souhaitez modifier la position d'origine, il vous suffit de changer de vue. Supposons que je commence à le faire à partir de 2020. Si je définis ce fichier supprime cette fenêtre et que je réécris ce code, vous pouvez voir cette fois qu' il part de cette position Nous couvrons donc déjà la plupart de ces formes. La dernière chose dont je vais parler concerne le texte, façon dont nous pouvons mettre du texte sur une image. Pour cela, je vais d'abord supprimer cette fenêtre, puis je vais commenter les lignes. Je vais également taper un commentaire. Cette fois, nous allons écrire du texte sur l'image. C'est très simple pour l' art de mettre du texte sur une image. abord, vous devez taper cb point, puis appeler la méthode put text. Mettez du texte. Ensuite, dans le RoundSesf, nous devons sélectionner l'image dans laquelle nous allons placer le texte Dans notre cas, blanc. Poma, dix, nous devons fournir le texte que vous souhaitez mettre dans notre image Dans notre cas, bonjour n. Ensuite, nous devons définir la position à partir de laquelle nous voulons commencer ou envoyer un SMS. Donc, dans la phase ronde, je vais passer 225 virgule 225 Ensuite, nous pouvons maintenant spécifier la phase de police. Donc, ici, pour passer la phase de police et pour passer la phase de police, nous devons utiliser un peu d'OpenCV dans les phases de police ci-dessous Et nous allons utiliser la police cv point, soulignement, ici nous avons beaucoup d'options Nous avons un petit plan duplex complexe , mais nous allons utiliser x, celui-ci. Et le prochain testament devra être considéré comme une question d'échelle. Et je veux passer à 1,0. Ensuite, nous devons fournir la couleur de la police et sa passe zéro, 255 virgule zéro, et également transmettre l'épaisseur Et pour ce qui est de l'épaisseur, je vais passer quelque chose. Je pense que deux suffisent, et oups, je dois fournir une commande entre ceux-ci et c'est tout Ensuite, nous devons appeler la fonction d' affichage d'image, le point à mon humble avis. Ensuite, à l'intérieur du rond, nous devons d'abord fournir un nom de fenêtre qui soit du texte Ensuite, nous devons fournir l'image en noir. Et je vais configurer ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Comme vous pouvez le constater, nous avons réussi donner du goût à cette image. J'espère donc que vous comprenez comment nous pouvons créer différentes formes et lignes. On peut aussi donner du goût à une image. Voilà pour ce tutoriel. Merci donc d' avoir regardé cette vidéo. C'est triste pour le prochain tutoriel. 6. Fonction importante dans le CV ouvert: Salut tout le monde, et bienvenue dans une autre vidéo. Dans ce tutoriel, nous allons parler des fonctions de base de la sauvegarde ouverte. Commençons maintenant par la première fonction. Grâce à cette fonction, nous pouvons convertir des images en images en niveaux de gris Nous avons déjà sélectionné cette image et nous l'affichons. Il s'agit d'une image couleur du canal BGIRImaget. Gir est l'abréviation de bleu, vert et rouge. Il existe maintenant des moyens de convertir BGIRImage en image en niveaux de gris Pour cela, nous allons utiliser la méthode de couleur CVD. Je vais d'abord déclarer un gris variable égal à CV, point, CV decolor Il y a les presses rondes. Tout d'abord, nous devons fournir l'image, l'image que je veux convertir en niveaux de gris, et notre variable d'image est IMG. Maintenant, au paramètre suivant, nous devons passer le code couleur, qui est CV point, coloré, soulignement BGR, pour Ensuite, je vais afficher cette image. Je vais copier cette fonction d'affichage d'image, et je vais la coller ici. Ensuite, je vais remplacer l'image gris chat par une variable grise. Je souhaite configurer ce fichier. Configurez ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Il s'agit de l'image en couleur et de l'image en niveaux de gris. Il est très facile de convertir VGrimage en image en niveaux de gris. Lors de la prochaine fonction, nous allons discuter de la façon dont nous pouvons flouter l'image Ici, je vais taper un seul commentaire et je vais taper flou Je vais déplacer cette ligne au-dessus du coma flou. Il existe une technique de flou multiple dans Open CP, mais nous allons utiliser Gersionblur Dans un premier temps, je vais déclarer un flou variable. Flou égal à Cv GusionBlrtie, GH Gasianblur. Ensuite, entrez d'abord dans la Runress uniquement pour fournir la source de l'image qui est IMG Virgule, ensuite, dans cette fonction, nous devons fournir la valeur de la taille du noyau et nous devons fournir la valeur sous forme de tapel. Ici, nous mentionnons la taille de l'image floue Si le round est contre, je vais réussir et ici je vais passer la taille du noyau trois par trois. Ensuite, nous devons définir la bordure. Je vais passer le point CV, bordure par défaut. Celui-ci. Ensuite, nous devons afficher cette image floue. Je vais utiliser la même fonction, affichage d'image. Je copie cette fonction et je vais la coller ici. Tout d'abord, je vais remplacer le nom de la fenêtre, gris, par flou Ensuite, je vais remplacer le nom de la variable, notre source d'image, qui est floue. Je vais satisfaire. Mais avant d'exécuter ce code, je vais commenter ces deux lignes. Je n'en ai plus besoin. Donc, après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat, mais ce n'est pas trop clair. Dans cette image, nous n' y ajoutons que peu de choses. Si nous le comparons à l'image d'origine, laissez-moi vous montrer que je supprime ce terminal et que je recommande cette ligne De plus, cette fois, je vais augmenter la valeur du noyau. Je vais passer de trois à 77 par sept, puis définir ce fichier et exécuter ce code dans mon terminal. Vous pouvez maintenant comparer les deux images. Il s'agit de l'image normale et voici l'image floue. Nous ajoutons ici Gersionblur. En utilisant la valeur du noyau, nous pouvons ajouter plus de sang en anglais. Passons maintenant à la fonction suivante, qui est la cascade d'âge. Ici, je vais créer une seule ligne à venir et je vais taper, age cascade. En utilisant cette fonction, nous trouvons essentiellement des arêtes dans une image. De nombreuses cascades H sont disponibles en mode ouvert C. Mais dans ce tutoriel, nous allons utiliser la cascade CIH, qui est assez connue dans le monde de la vision par ordinateur. En gros, il s'agit d' un processus en plusieurs étapes qui implique le flou, le calibrage, etc. Commençons donc. Donc, d'abord, je vais déclarer une variable, et le nom de notre variable est un Canny parce que nous allons utiliser n'importe quelle cascade, assignée avec C, nous pointons Cy À l'intérieur des rondelles, nous devons d'abord fournir cette image source IMG W que nous devons également passer à la valeur seuil Je vais utiliser 125 pour la première valeur et 175 pour la deuxième valeur . Essayons maintenant d'afficher cette image dans notre fenêtre. Mais avant de copier cette fonction, l'image montre et commente cette fonction. Ensuite, je vais le coller ici et remplacer BlaikN. De plus, je vais remplacer le nom de la variable, Ken Exécutons maintenant le code dans notre terminal. Après avoir exécuté ce code dans notre terminal, voici à quoi il ressemblait. C'est ce qu'il a écrit. Ainsi, comme vous pouvez le voir dans cet exemple, en utilisant la cascade, nous sommes en mesure de détailler le bord de l'image Non seulement cela, nous pouvons également réduire les bords si nous passons une image floue. Laisse-moi te montrer. Donc cette fois, je vais transmettre à Blurry Age une source Em, celle-ci Je vais remplacer ING par du sang, et je vais configurer ce fichier. Après satis file, si j'exécute ce code dans mon terminal, vous pouvez maintenant voir que nous sommes en mesure de réduire le bruit Grâce à l'utilisation d'une image floue, le bruit a été réduit Mais si nous réduisons la valeur sanguine, laissez-moi vous montrer si j'utilise du sang de Gerson, trois par trois, puis ce fichier, si je décode, vous pouvez maintenant constater le résultat Maintenant, vous pouvez voir que cela augmente les arêtes. Cela augmente le bruit de cet âge. Si vous modifiez la valeur sanguine d'une image, vous pouvez la détecter plus clairement. Lors de la prochaine fonction, nous allons discuter de la manière dont nous pouvons dilater une image Pour dilater l'image, nous allons utiliser une structure et un élément spécifiques La structure et les éléments que nous allons utiliser datent en fait des époques. Dans un premier temps, je vais supprimer mon terminal , puis je vais taper un seul commentaire et taper dilating the mache Ensuite, je vais déclarer une variable. Il tape dilatez-le égal au point Cv, dilatez-le Ensuite, à l'intérieur du RoundreESF je vais passer l'image CE, celle-ci, une Pour transmettre la variable CE , nous devons fournir la taille du noyau. Après avoir intégré les robes rondes, je vais passer les 33, et aussi les itérations. Je suis de type itération 1. Maintenant, affichons cette image. Pour cela, je vais utiliser la fonction onto coller ici et remplacer Canny par dilate it Je copie le nom de cette variable et remplace Canny par dilated Nous devons également remplacer la Ensuite, je vais définir ce fichier, puis je vais définir ce fichier. Laissez un peu d'espace entre les fonctions. Sinon, ça a l'air très élégant. Alors je vais commenter cette ligne. Je ne veux pas montrer l'image originale cette fois. Je veux montrer uniquement l'image astucieuse et l'image dilatée. Merci de vérifier que si j'exécute ce code dans mon terminal, vous pouvez voir à peu près le même résultat. Il s'agit de l'image dilatée, et il ne s'agit que de l'image Ky Ce sont les bords et ce sont les bords dilatés. Si vous le remarquez bien, vous verrez que les bords dilatés sont beaucoup plus épais que les précédents Si j'augmente la valeur d'itération, laissez-moi vous le montrer. Je vais fermer les terminaux. Ensuite, je vais augmenter l'itération Willow. Oh, je vais y arriver. Je vais donc en faire trois, puis définir ce fichier. Ensuite, je vais réexécuter ce code dans mon terminal. Après avoir exécuté ce code dans mon terminal, vous pouvez voir le résultat. Les bords dilatés sont beaucoup plus épais que les bords en C. C'est ainsi que cela fonctionne. Je vais maintenant parler de la fonction lst, qui permet de redimensionner et de recadrer Ici, je vais taper une commande unique et je vais taper redimensionner Nous avons déjà appris comment redimensionner notre cadre dans nos vidéos précédentes Cette fonction est très simple d'utilisation. Tout d'abord, nous devons déclarer une variable et le nom de notre variable est redimensionné Égal aux résidus du point Cv. Ensuite, à l'intérieur de la pause de course, nous devons d'abord transmettre l' image source, qui est ING. Voici les informations de passe, et ensuite, nous devons transmettre la dimension de l'image. Je vais le régler 500 par 500, mais il va ignorer le ratio d'aspèces Je vais commenter ce que le précédent onto fonctionne. Je n'en ai pas besoin pour le moment et je vais définir ce fichier et dois également appeler la fonction p pour redimensionner l'image Remplacer cette variable par des résines. Je vais également changer le nom de la fenêtre et définir ce fichier. Passons maintenant au code et voyons ce qu'il a écrit. Après avoir saisi ce code, vous pouvez voir le résultat. Notre image repose correctement, mais elle ne suit pas le rapport hauteur/largeur. Si je le compare à l'image originale, laissez-moi vous le montrer. Si je supprime cette ligne et que je définis à nouveau ce fichier, et cette fois-ci pour passer 400 par 400, 400 par 400, que je définis ce fichier et que j'exécute ce code, vous pouvez voir le résultat Ceci est l'image d'origine, et ceci est l'image redimensionnée, vous pouvez voir la différence entre leurs proportions Ensuite, je vais vous montrer comment recadrer l'image Je supprime les fenêtres et je vais associer un autre commentaire, en le recadrant Sur la base de leur valeur en pixels, nous pouvons sélectionner la portion d'une image. Laissons donc tomber l'image. Donc dans un premier temps, je vais déclarer un crop variable Tikal deux, je vais passer l'image source IMG Ensuite, nous devons utiliser des accolades carrées et nous devons passer les points Tout d'abord, je vais sélectionner 50 points 200. Et le point suivant est de 200 à 400. Ensuite, je vais afficher cette image en utilisant la fonction image. Je copie donc cette fonction et je vais coller ici et je vais remplacer la taille variable Cro. Changer également nom de la fenêtre, recadrer, je vais définir ce fichier. Avant de définir ce fichier, nous devons commenter cette ligne. Nous devons également le comparer à l'image d'origine. Donc, après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Il s'agit de l'image d'origine et de l'image recadrée Il s'agit de la partie d'image recadrée de cette image originale. Donc, si j'essaie de correspondre à cela, oui, nous pouvons faire de même. C'est ainsi que cela a ralenti. C'est donc peu près pour cette vidéo. Nous venons d'apprendre les fonctions de base dans Open C. Dans le prochain tutoriel, nous allons en apprendre davantage sur la transformation d'image. Merci donc d' avoir regardé cette vidéo. Restez à l'affût pour le prochain tutoriel. 7. Traduction d'images Cv ouverte partie1: Bonjour et bienvenue dans le cours Python Open City. Dans ce set de six, nous allons apprendre les bases de la transformation d'image. agit de techniques courantes que vous souhaiteriez appliquer à vos images, notamment la translation, la rotation, le redimensionnement et le retournement Commençons par la traduction. La traduction consiste essentiellement à envoyer l'image le long du xs et du yx. À l'aide de la traduction, vous pouvez envoyer l'image en haut, à gauche et à droite. Vous pouvez également le lancer de manière combinée. Pour traduire l'image, nous pouvons créer une fonction de traduction. Déclarez une fonction. Pour cela, je vais lier BA et le nom de notre fonction est translate. Traduisez dans les Rundresses et je vais passer en revue trois paramètres abord, nous devons transmettre l'image , image que je veux traduire IMG. Ensuite, je vais passer X xs et ensuite je vais passer YxS. Ensuite, dans cette fonction, pour traduire l'image, nous avons besoin d'une matrice de traduction. Je vais donc déclarer une variable transmt. Transmat en nécessite deux, et je vais utiliser une fonction appelée float float 32 du module Numbi, NP, tot, float, point, float 32. Mais avant de devoir importer le module NumPi Ici, nous tapons, importons NumPi en tant que NP et celui-ci, prenons une liste et dans cette liste, devons passer à une autre liste. Une autre liste. Dans notre première liste, nous allons dire un, zéro virgule X, et dans notre deuxième liste, je vais passer zéro, une virgule Y. Une fois que nous avons créé la traduction de la matrice, nous devons fournir Je vais déclarer une autre variable appelée tension. Dimension égale à am pass a tuple. À l'intérieur de la robe ronde passe Amul, en méthyle en forme d'image Forme de l'image à l'intérieur du carré ss, am type un, comme vous le savez, l'image est définie avec. Nous devons également fournir la hauteur de l'image. Pour cela, nous devons taper image, point, forme. À l'intérieur des robes carrées, je vais passer zéro. C'est un liquide défini. Ensuite, nous pouvons renvoyer un certain type, renvoyer vt très bien. Très bien. À l'intérieur des presses rondes, je vais passer l'image. Ensuite, je vais transmettre la matrice transmt et nous devons transmettre la dimension Créons maintenant notre première image traduite. Mais avant de vous dire que si je passe une valeur de moins X, cela va déplacer le côté inférieur de l'image, et si j'utilise une valeur de moins Y, cela va renvoyer l'image à l'envers. Et si je veux déplacer l'image sur le côté droit, nous devons transmettre une valeur X positive. Et si je le déplace à la baisse, nous devons utiliser une valeur Y positive. Créons maintenant l'image traduite. Donc, pour taper une autre variable, traduisez-la. Traduisez-le de la même manière que traduire. Traduisez, puis dans le processus du tour, nous devons transmettre l'image. Première valeur, je vais transmettre cette image, ING. Ensuite, nous devons passer la direction xs et la direction xs. Je vais passer une valeur positive de cent pour xs pour yXS et je vais également transmettre une valeur de cent positive Après avoir satisfait, nous devons maintenant afficher cette image dans notre fenêtre. Pour cela, nous devons utiliser la méthode c point Imho Cv point Imo Image show Ensuite, à la place du RoundRef, nous devons fournir un nom à cette fenêtre, qui est traduite Je copie le nom de cette variable et je le colle ici. Ensuite, nous devons utiliser l'image. Quelle image je veux voir. Je veux plier cette image pour la traduire. J'appelle cette variable et je vais définir ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat ici. C'est la différence entre deux arrières. Il s'agit de notre image originale, et voici notre image traduite. Ici, nous expédions l' image, 100 points xs et 100 points yxs positifs Il est expédié de 100 pixels et expédié directement de 100 pixels. Maintenant, expédions l'image, à gauche et de 100 pixels vers le bas. Cette fois, je vais utiliser des valeurs négatives. Je veux le déplacer dans la direction Xs de -100 pixels. Je tiens à dire que c'est du bout des lèvres et aussi que je veux le déplacer à la baisse. Donc, notre XV va est en vente. Maintenant, après avoir défini ce fichier, exécutons le code dans notre terminal. Après avoir exécuté le code dans notre terminal, vous pouvez voir le résultat. Comme vous pouvez le voir, cette fois, cela a déplacé l'image sur le côté inférieur et sur le côté inférieur de l'image Mais si vous voulez déplacer l'image vers le haut, dans ce cas, laissez-la passer moins la valeur YXS -100 pixels. Maintenant, exécutons le code et voyons s'il fonctionne correctement ou non ? Avant d'exécuter le code, vous pouvez voir le résultat. Cette fois, nous expédions cette image, 100 points sur le côté gauche et 100 points vers le haut. C'est ainsi que fonctionne la traduction. Toujours dans notre section de démarrage, j'ai mentionné la méthode de travail basée sur les valeurs positives et négatives. Si vous voulez le déplacer du côté gauche, utilisez moins X, et si vous voulez le déplacer vers le haut, utilisez moins Y. Si vous voulez le déplacer du côté droit, utilisez un X positif, utilisez un X positif, et si vous voulez le déplacer vers le bas, utilisez un Y positif. C' utilisez un Y positif. est tout pour ce didacticiel la partie suivante, nous parlerons de rotation 8. Rotation des images Cv ouvertes: C'est bon de vous revoir, les gars. Dans cette section, nous allons apprendre comment faire pivoter une image à l' aide de Python OpenC Comme vous pouvez le voir dans mon éditeur de code Visual Studio, Harry a déjà créé un fichier Python, pivoter le point pi, et je distend déjà l'image en utilisant la fonction image it Alors la rotation est exactement ce à quoi elle ressemble. Rotation d'une image sous certains angles. Au début, je vais créer une fonction, Dave et le nom de notre fonction est faire pivoter cette fonction pour prendre au total trois arguments, l'image, et ensuite elle va prendre un angle, l'angle de rotation. De plus, vous prenez un autre paramètre qui est un point de rotation, un certain t, ROT, point, égal à nun Ensuite, dans cette fonction, nous devons saisir la hauteur et la largeur de cette image. Pour cela, à l'instant où les ronds sont de type amo, hauteur , largeur égale à, je vais utiliser la méthode de forme ING, Ng. À l'intérieur de l' hémotype de base carré, deux points. Je veux dire les deux premières valeurs, qui sont la hauteur et. Ensuite, je vais utiliser la condition IP. Si le point de rotation est nul, alors dans cette condition IP, nous allons faire pivoter l'image autour du centre et pour obtenir le point central, je vais taper un autre point racine variable pour obtenir le point central, son point de pourriture de type égal à l'intérieur de la rondeur, nous devons diviser par deux Tapez donc la largeur, divisée, divisée par deux. De la même manière, nous devons diviser la hauteur par la hauteur divisée par deux. Renvoie la position centrale, sinon les coordonnées du centre de cette image. Nous devons maintenant créer la matrice de rotation. Pour cela, je vais d' abord établir une matrice de rotation variable de type rot man. La matrice de rotation égale à v point obtient la matrice de rotation. Matrice de rotation de la porte deux d, celle-ci. Ensuite, à l'intérieur des rondelles, vous devez passer ici le point de rotation, qui est la position centrale Je vais transmettre cette valeur, rot point. Pas du tout. Dans ce cas également, nous devons passer l'angle. Ensuite, je vais passer un flacon de balance. Si vous souhaitez redimensionner l'image, lorsque vous la faites pivoter, dans ce cas, vous pouvez passer à une autre échelle. Sinon, vous pouvez utiliser la valeur d' échelle par défaut , qui est 1,0. Ensuite, nous devons mentionner la dimension sous forme de tuple. Tapez la dimension égale à celle du tuple, je vais passer la largeur et la hauteur Maintenant, nous pouvons renvoyer l'image de rotation, smtirTurn ici je vais appeler la méthode v point, Ensuite, à l'intérieur du laiton rond, ici d'abord, je vais passer l'image. Ensuite, je vais passer le tapis pourri, matrice de rotation, et aussi fournir du CA entre eux. Ensuite, nous devons passer la dimension. C'est donc la fonction qui permet de faire pivoter l'image. Maintenant, nous devons appeler cette fonction. Pour cela, je vais créer une variable nommée rotate. Rotation égale à ici Je vais appeler la fonction rotate et à l'intérieur du roundres, je vais d'abord passer l'image source IMG, puis je passerai l'angle de rotation, qui est de 45 Je vais configurer ce fichier. Nous devons maintenant afficher cette image dans notre fenêtre. Pour cela, nous devons utiliser la fonction image. Donc, tapez v point. Je suis dans la presse ronde. Dans un premier temps, nous devons donner un nom à cette fenêtre qui est pivotée. Je copie le nom et je le transmets ici. Ensuite, nous devons utiliser une virgule et transmettre la source de l'image, qui est pivotée Je vais sertir cette pièce. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Vous pouvez voir qu'il s'agit de notre image originale et que c'est notre image pivotée Ici, nous faisons pivoter l'image dans le sens antihoraire. Si vous souhaitez faire pivoter cette image dans le sens des aiguilles d'une montre, il vous suffit de faire passer une vidéo négative de -45 degrés Une fois satisfait, si je réexécute ce code, vous pouvez voir le résultat. Cette fois, il fait pivoter l'image dans le sens des aiguilles d'une montre. C'est ainsi que nous pouvons faire pivoter une image en utilisant la sauvegarde ouverte. Nous pouvons faire pivoter cette image sous n'importe quel angle. C'est tout pour ce tutoriel. Merci d'avoir regardé cette vidéo. 9. Recadrage de la traduction d'images Cv ouverte partie 3: Bienvenue donc dans un autre didacticiel lié à la transformation. Dans ce tutoriel, nous allons apprendre à redimensionner, à effleurer et à recadrer Commençons donc par la pratique. Nous avons déjà appris le redimensionnement dans nos précédents tutoriels, nous devons utiliser la fonction de redimensionnement des points Cv Donc, dans un premier temps, je vais déclarer une variable nommée reside. Redimensionné égal à la fonction de redimensionnement des points C, réside. Ensuite, à l'intérieur des rondes, je vais d'abord utiliser une image IMG variable à l'intérieur des rondes, nous devons fournir la dimension de redimensionnement Je dois passer les 300 par 300. Ensuite, nous devons transmettre la valeur de l'interpolion. J'ai tapé interpolation et là, je vais utiliser v point InterQpt Enter Quvit est lent, mais il renvoie une meilleure image Acceptez ensuite d'appeler la fonction d'affichage d'image et de la placer ici, et cette fois, dans un premier temps, je vais changer le nom de la fenêtre. Ceci est redimensionné. De plus, je vais appeler la variable, celle-ci. Je vais régler celui-ci. Maintenant, configurons le fichier et exécutons le code dans notre terminal. Après avoir exécuté ce code, vous pouvez voir le résultat. Il s'agit de notre image d'origine, et voici notre image redimensionnée Parlons maintenant de notre prochaine transformation, qui est le retournement Tout d'abord, je vais commenter cette ligne. Ensuite, je vais apprendre comment retourner une image en utilisant SNing ouvert Pour cela, il n'est pas nécessaire de définir de fonction. abord, je vais taper une commande de longueur unique et je vais taper flipping Ensuite, je vais déclarer une variable appelée flip. Glissez à plat d'une valeur égale à un point C. Ensuite, dans les presses rondes, je passais l'image que je veux retourner à IMG. Ici, nous devons passer un u. Ce serait zéro, un, sinon, moins un. Commençons par zéro. Alors je vais afficher cette fuite. Pour cela, nous devons utiliser la fonction d'affichage d'image, et je vais remplacer le nom de la fenêtre, redimensionner par flip Je vais également remplacer la variable posée. Je vais configurer ce fichier. Zéro implique essentiellement de retourner l'image verticalement, et si vous en passez une, elle retournera l'image horizontalement Si vous passez moins un, l'image sera inversée, à la fois horizontalement et verticalement. Commençons par la verticale, passons à zéro. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Verticalement, il retourne l'image. Je vais maintenant éclairer cette image horizontalement. J'en passe un. Après avoir défini ce fichier, si j'exécute ce code, vous pouvez maintenant le voir retourner l'image horizontalement. En gros, il reflète l'image. Vous pouvez voir le rétroviseur se réinitialiser. Et si vous voulez inverser cette image dans les deux sens, vous devez passer moins un. Si je définis ce fichier et que j'exécute ce code, vous pouvez voir le résultat. Vous pouvez maintenant le voir retourner l' image, à la fois dans le sens vertical et horizontal. C'est ainsi que fonctionne le flip. Ensuite, je vais commenter cette ligne et cette fois, nous allons en apprendre davantage sur le recadrage, comment recadrer une image Nous avons déjà appris le recadrage dans nos précédents tutoriels Tout d'abord, je vais déclarer un commentaire et Healt recadrage. Ensuite, je vais déclarer une variable crop Crop égale à laquelle nous devons transmettre cette source ImageMG Ensuite, à côté de l'évidement carré, nous devons définir la position, le point, le point de départ et le point final du recadrage Ici, je vais passer une petite technique de tranchage 200 cold 400 C'est le point de départ, et pour le point final, je vais dépasser les 300 400. C'est le but, et je vais m'en contenter. Après avoir défini ce fichier, nous devons afficher cette image. Pour cela, nous devons utiliser la fonction d'affichage d'image. Je copie donc cette fonction colle ici et je remplace flip par ra. Nous devons également remplacer le recadrage de longueur variable et définir ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Oups, ça ne marche pas. Je pense que j'ai fait une erreur. Oups, comment tu as utilisé une virgule. Nous devons utiliser le colon Si. Ensuite, je vais définir ce fichier et exécuter ce code. Si j'exécute ce code, vous pouvez voir le résultat. C'est ce qu'il renvoie. Il s'agit de l'image recadrée. Je pense que c'est exactement cette position. Si je change la valeur de la récolte de 50, 200 et de 100 par 200. Définissez ensuite ce fichier et exécutez ce code. Voyons voir. C'est la zone qu'il a renvoyée. Nous l'avons déjà appris dans nos précédents tutoriels. C'est donc tout pour ce tutoriel. Dans le prochain tutoriel, nous allons apprendre à lutter contre la détection. Merci d'avoir regardé cette vidéo, Styune pour le prochain tutoriel 10. Détection de courbes Opencv: Bonjour, tout le monde. Bienvenue sur une autre vidéo. Dans cette vidéo, nous allons parler de la manière dont nous pouvons identifier les contours. Les indices sont essentiellement les limites des objets. Il est fait de lignes et de courbes. Dans une phrase simple, contour est le contour ou la forme de quelque chose. Il s'agit surtout d'une figure courbe, sinon irrégulière. Le mot contour vient d' un mot italien, qui est contour. Mais si je parle d'un point de vue mathématique, les courbes et les arêtes sont deux choses différentes Ou quelque chose de très utile lorsque vous vous impliquez dans l'analyse de formes. Il est également utile pour la détection et la reconnaissance. Dans ce tutoriel, j'aimerais vous donner une idée des contours et de la façon dont nous pouvons les utiliser en mode ouvert C. Comme vous pouvez le voir, nous lisons ici un fichier image et cette image en utilisant la fonction IMF. Si vous apprenez ce code dans mon terminal, vous pouvez voir cette image. C'est notre image de chat. C'est l'image CAT exacte. La prochaine chose que je vais faire, convertir cette image en image en niveaux de gris Pour cela, HemotypeGray. Le gris est égal au point CV. Je vais utiliser une méthode appelée couleur CVD. C VT color à l'intérieur du ResSSF rond, nous devons transmettre l'image source, qui est Donc, pour transmettre cette variable. Ensuite, je vais utiliser la couleur des points CV. CV coloré. Couleur et je veux convertir cette couleur BGR en vert. Souligner le gris BGR. Celui-ci. Ensuite, nous devons afficher cette image. Je vais copier cette ligne et la coller ici. Je vais remplacer Tati Gray. Nous devons également remplacer le nom de la variable, en gris. Je souhaite configurer ce fichier. Après avoir configuré ce fichier, si j'ai fait ce code dans mon terminal, vous pouvez voir le résultat, vous pouvez voir le différent. Voici notre image, et voici notre image en niveaux de gris Après cela, je veux saisir les bords de cette image. Pour cela, je vais utiliser le détecteur de bord E. premier temps, je vais déclarer une variable KE égale à C point K. Ensuite, à l'intérieur du tour , je vais d'abord transmettre l'image source, qui est ING. Ensuite, vous devez passer le seuil total de deux. Et ici je vais passer 125 virgules et la deuxième valeur est 175 Ensuite, je vais afficher cette image. Je vais copier cette fonction. Je vais l'afficher et la coller ici et remplacer le gris par K. Je vais également commenter cette image en couleur. Je ne veux pas afficher trois images sur mon écran. Bougez ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir le résultat ici. Il s'agit de l'image en niveaux de gris et de l'image de détection des contours Et maintenant je veux trouver les contours de cette image. Nous allons donc utiliser la méthode du contour. Laisse-moi te montrer. Je vais donc utiliser cette méthode et cette méthode pour essentiellement écrire des contours et des hiérarchies. Ici, je vais taper des contours, la deuxième variable étant les hiérarchies. Donc ici, je vais utiliser la méthode Civ point find contu. Ensuite, à l'intérieur de la robe ronde je vais égaliser les bords autant que possible. Ils se déplacent dans quel mode ils trouvent les contours. Cela pourrait être CivTrorct. Laissez-moi vous en montrer un Civ point RetorScoett. Il y a beaucoup de tournées. Nous avons le mode externe, si je vous montre l'arrière, la liste com externe , FloODF maintenant, j'aimerais passer à la liste car elle renverra tout le contour, sans utiliser d'arbre, j' aimerais utiliser la liste La prochaine méthode que je vais passer, qui est la méthode d' approximation des contours. Donc, après COVA, je vais taper Cividt chain approach, nonne, celui-ci Maintenant, expliquons à nouveau cette ligne. Ici, vous pouvez voir le contenu fin du CV. Cette fonction ret provient d'une image binaire, et Ki est l'image source Dans quelle image vous souhaitez détecter le conduit. CVR le moins est le mode de traçabilité des contours et la méthode suivante, la chaîne de points CV approximative, je stocke tous les points des contours et la hiérarchie est la variable Il contenait des informations sur les tropolos d'image et la variable de contour est la liste de tous les contours Il va stocker tous les contours que nous trouvons dans cette image et chaque contour stockera un Nampi en un point Comme je vous l'ai dit, le contour est une liste, et si vous voulez imprimer le nombre de contours que nous trouvons dans cette image, oui, vous le pouvez. Il vous suffit d'utiliser la fonction d'impression , puis à l'intérieur de l'évidement rond, vous devez utiliser la fonction len A dix Ensuite, à l'intérieur de l'évidement rond, je vais passer les contours Celui-ci, et je vais configurer ce fichier. Après avoir défini ce fichier, si j' exécute ce code dans mon ravinal, c'est le résultat que nous avons trouvé, savoir qu'il a renvoyé 359 contours Et si vous souhaitez réduire le bruit des contours, vous pouvez flouter cette image Floutons donc l'image grise. Donc, ici, je vais créer un autre flou variable. Du flou, désolé, pas du bleu. Flou, égal au flou gaussien à V points. Ensuite, à l'intérieur de la cavité ronde, nous devons passer l' image source qui est grise Sur ce, nous devons passer aux valeurs, quantité de gris que je veux. Après avoir transmis l'image source , nous devons également définir la taille K. Je veux parler de la taille du noyau. Ensuite, à l'intérieur de la résine ronde, nous devons indiquer la taille du noyau Je passe donc ici cinq CA cinq. Ensuite, nous devons transmettre une autre valeur, l'heure de la bordure. Je vais donc taper CV point, border, et ici j'utilise celui par défaut, border deform J'aimerais également afficher cette image floue. Je copie donc cette fonction, je l'affiche et je vais la coller ici et remplacer le gris par le flou Ensuite, je vais configurer ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous verrez le résultat. Voici l'image en gris flou, et voici l'image Kyimage Ensuite, je vais trouver les bords de cette image. Pour cela, nous devons transmettre la variable et cette section. Ici, je peux. Je veux satisfaire. Approx satisfait. Si j'exécute ce code dans mon terminal, c'est ce qu'il renvoie. Vous pouvez maintenant le voir renvoyer un total de 23 contu. Cela a réduit le nombre de contours car les héros utilisent la longueur. C'est ainsi que l'on peut trouver un contu à partir d'une image. Il existe un autre moyen trouver le contour d'une image. Mais je ne vais pas en parler dans ce didacticiel. Je vais en parler dans le prochain tutoriel. 11. Détection de courbes Opencv partie 2: C'est bon de vous revoir, les gars. Il s'agit de la deuxième partie de ce didacticiel. Dans cette section, nous allons voir comment utiliser différentes méthodes pour trouver des conduits. Sans utiliser le détecteur Canny Edge, nous allons utiliser le seuil C'est une autre fonction d'OpenCV. Donc, dans un premier temps, je vais m'engager sur l'objectif. Je n'en ai pas besoin Ensuite, en bas, je vais d'abord déclarer une variable, avec. De plus, je vais déclarer les déchets. Égal au point cv h. Celui-ci. Et il va falloir cette image grise. Je vais donc le copier en gris. Nous devons également dépasser la valeur du seuil. Je vais dépasser 125 pour la première valeur de seuil et 255 pour la deuxième valeur de seuil. Ne t'inquiète pas pour ça. Nous allons en apprendre davantage sur Threshold dans nos prochains tutoriels. Le seuil binarise essentiellement l'image. Si l'intensité d'un pixel est inférieure à 125, elle sera réglée à zéro. Je veux dire, alors ça va passer à la couleur noire. Et si l'intensité de l'image est supérieure à 125, alors elle passe à 255, sinon, couleur blanche. Et dans notre méthode des contours fins, nous allons transmettre cette variable thrash Poubelle. De plus, nous devons passer une autre valeur dans la fonction de seuil, qui est le seuil t. Donc, la virgule de passe, et ici je veux lier les points cv à BinArt un lier les points cv à BinArt Maintenant, définissez ce fichier , exécutez le code dans un terminal et voyez combien de contours il renvoie. Comme vous pouvez le constater, pour exécuter le code, renvoyez totalement le contour 1073 Maintenant, affichons le thrashimage, pas l'image grise. Je copie donc cette ligne, je la commente appelle OnshoFunction, et je remplace gray par trach Encore une fois, je vais définir ce fichier et exécuter le code dans mon terminal. Pour exécuter le code dans mon terminal, c'est le résultat que nous cultivons. C'est le résultat qu'il renvoie. Voici l'image en noir et blanc. Non, c'est l'image binaire, et elle est composée de points noirs et blancs. Ne t'inquiète pas pour ça. Nous allons en parler dans notre section avancée. Juste une chose dont vous devez vous souvenir, hresold binarise essentiellement Il s'agit de la forme binaire d'une image. Zéro indique cette couleur et 255 indique la couleur blanche. Maintenant, permettez-moi de vous montrer une chose. Dans un premier temps, je vais importer num pi. À chaque fois, importez Num Pi en tant que NP. En dehors de cela, je vais créer une variable vide B Blan égale à, et ici je vais appeler la fonction depuis NumPinp Ensuite, à l'intérieur de l'évidement rond, je vais saisir la forme de l'image, cette forme variable Alors voilà, je vais taper mon point Shae. Ensuite, à l'intérieur du carré, résister à deux points, je vais saisir tout cela à v. Ensuite, nous devons passer le type de données B, tapez, et ici, entre guillemets, je vais passer UI NT, H. Ensuite, je vais afficher cette image de banque en utilisant la fonction d'affichage d' image. Je copie cette ligne et je la colle ici. Et déchirez cette image en blanc. Je vais configurer ce fichier. Configurez ce fichier. Si j'exécute ce code dans mon terminal, vous pouvez voir le résultat. Il s'agit de l' image vierge que nous créons. Il s'agit de la dimension exacte de cette image CAT. Maintenant, la question est : dans quel but créons-nous cette image vierge ? Parce que dans cette image vide, je vais dessiner ou continuer. Je vais créer ce contute dans cette image vide. C'est pourquoi j'ai créé cette image vierge. Et pour dessiner les contours, nous devons utiliser une fonction appelée draw contube, donc tapez v point, dessinez celui-ci, et à l'intérieur de la robe ronde, nous devons d' abord passer l'image vide Tapez donc en noir. Ensuite, nous devons transmettre la liste des contours. Cette variable. Comme je vous l'ai dit, ce contour est une liste. Je stocke tous les contrôles. Donc, pour passer les contuses. Ensuite, nous devons passer l'indice de contour. Je veux dire combien de conti vous voulez faire passer, et je veux tous Op. Donc je vais passer Native One Ensuite, nous devons fournir la couleur, et nous devons fournir la couleur au format Bzier Donc je veux de la couleur rouge. 00 virgule 255 Nous devons également passer l'épaisseur et je veux passer l'épaisseur deux. Et maintenant, nous devons supprimer cette image vide. Donc, pour copier cette ligne, j'en suis sûr et je vais la coller ici. Et aussi, je commente la ligne précédente. Je n'en ai pas besoin maintenant. Et je vais configurer ce fichier. Après avoir défini ce fichier, exécutons le code dans notre terminal. R J'exécute le code dans mon terminal qui ne fonctionne pas correctement. Je pense qu'il y a une erreur dans mon code. Je pense que j'ai fait quelques erreurs, alors vérifions-le. Ici, celui-ci, je n'ai pas besoin de cette technique de tranchage. Je veux juste utiliser la forme de point de l'image. Il va saisir la zone de forme de l'image. Configurons donc le fichier et exécutons-le à nouveau. Comme vous pouvez le voir, voici ce qu'il a renvoyé pour exécuter ce code . Il a renvoyé l'image du chat. En gros, nous dessinons ici une nouvelle image en utilisant les points de conduite. Nous prenons d'abord une image vierge, puis nous utilisons les points conduits du neuvième mot et nous les appliquons dans l'image vide. Ce n'est pas la même chose. À partir de l'image du seuil, allez saisir les bords et en utilisant ces bords, nous dessinons une image sur notre page blanche. Si je réduis l'épaisseur, je trouve que c'est plus joli. Voyons voir. Je vais réduire l'épaisseur de 2 à 1 et recommencer à refroidir. Oui, les nerfs semblent assez clairs. Vous pouvez également obtenir un résultat différent si vous modifiez la valeur du seuil. Supposons que si je réduis la valeur du seuil 255-175, le résultat sera différent Ne t'inquiète pas Nous allons en apprendre davantage sur le seuillage dans notre prochain tutoriel Merci donc d' avoir regardé cette vidéo, Statute pour le prochain tutoriel Dans le prochain tutoriel, nous allons parler des espaces colorimétriques. 12. Espaces de couleurs: Bonjour, les gars, c'est bon de vous revoir. Encore une fois, je suis de retour avec un autre tutoriel lié au CV ouvert. Et dans ce didacticiel, nous allons apprendre les espaces colorimétriques. Les espaces colorimétriques sont essentiellement des espaces de couleur. Le RGB est un espace colorimétrique, l' échelle de gris est un espace colorimétrique. Nous avons également différents espaces colorimétriques tels que HSV, AAD et Mini Commençons maintenant par essayer de convertir l' image en niveaux de gris. Nous allons donc convertir une image GR en image en niveaux de gris. Comme vous le savez, Bier est le mode couleur par défaut dans Open C. Pour cela, je vais déclarer un gris variable, gris égal au point CVI attribué, je vais utiliser une méthode appelée couleur CVD, couleur CVT Ensuite, à l'intérieur des rondes, nous devons d'abord transmettre l' image source qui est IMG, puis nous devons transmettre la couleur. Couleur Smit. Soulignez, et je veux convertir le BGR en gris, celui-ci, et je vais sous-traiter ce Ensuite, je vais afficher cette image en utilisant la méthode Imho. Très bien, Cm point, IMO. À l'intérieur de la brèche ronde, je vais d'abord passer le nom de la fenêtre qui est gris Ensuite, nous devons transmettre l'image source, qui est une variable grise. Et je veux configurer ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, comme vous pouvez le voir, il s'agit notre image d'origine et de notre image en niveaux de gris Ici, nous convertissons une image BGR en image en niveaux de gris. Je vais maintenant convertir BGR au format HSV. HSV est l'abréviation de saturation des teintes W. Tout d'abord, je vais taper une coman BGR HSVt pour appliquer la couleur HSV et je veux copier le et je veux Et je l'ai basé ici. Tout d'abord, je vais changer le nom de la variable grade 2 hSv Ensuite, je vais changer Bijiac deux HSV. Celui-ci. Je vais également changer le nom de la fenêtre, remplacer le gris par HSV et une longueur variable Je veux satisfaire. Après avoir satisfait, si j'exécute ce code dans mon terminal, voyons ce qu'il renvoie. Il s'agit du mode couleur gSv de cette image. Parlons maintenant d' un autre type d' espace colorimétrique, l'AAB Ici, je vais taper une autre commande unique, hashtag. Cette fois, je vais convertir VGR en LAB. Encore une fois, je vais copier cette section et la coller ici, et cette fois, je vais changer HSB en AB De plus, je vais changer le code couleur, jia en LAB. Ensuite, nous devons changer le nom de la fenêtre, LAB, également pour modifier la longueur variable. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, voyons ce qu'il renvoie. Il s'agit du mode couleur LAV de cette image. C'est comme ça que c'est lent. Comme vous le savez, OpenCV utilise par défaut le format gR. Mais en dehors d'OpenC, nous utilisons le format RGB, qui est le contraire du BGR Il s'agit d'un mode couleur inverse du format BGR. Maintenant, je veux ouvrir cette image en mode RGB. Je vais ouvrir cette image en dehors de l'espace ouvert C. Tout d'abord, je vais commenter les lignes, puis je vais importer Moni mat leave, some type, import, Mt leave Celui-ci, qu'il appelle une fonction particulière, Pi trace un tracé. Si vous n'installez pas ce module sur votre système, ouvrez simplement votre Windows Power Shin and tie PIP, installez Matt Blot et Tick Il va l' installer dans votre système. Je l'ai déjà installé, donc je ne vais pas l'installer E. Donc, fou, Blot, lis l'image dans AGM Mais avons-nous ouvert cette image en utilisant Open C. J'ai lu l'image en BGM Ouvrons cette image en utilisant Mt Blot Leap. Il tape PLT, point, je lancerais la fonction IMS, c'est vrai Ensuite, dans les runres, je vais passer l'image source IMG, image, celle-ci Ensuite, je vais afficher cette image en utilisant PLT point sFunction Certifions-le et exécutons le code dans notre terminal. Apparaissent sur ce code dans notre terminal, c'est le mode bGir de cette image et c'est le mode RGB de cette image Fondamentalement, il applique une couleur opposée cette image originale. Il s'agit d'une image BGIRImage et d'une image RGB. Ouvrez lisez cette image en mode Bzier et par défaut Mtlot donc l' image en mode RGB C'est pourquoi Matt Plotly pense qu'il s'agit d'une couleur RGB. C'est pourquoi nous pouvons voir la version opposée de cette couleur. Maintenant, laissez-moi vous montrer quelque chose. Je vais supprimer cette fenêtre et commenter les deux lignes. Laisse-moi te montrer quelque chose. Je commente à la fois cette ligne et cette fois, je vais convertir le BGA en couleur RGB Voici le type de commentaire BGR deux RGB. Donc, d'abord, je vais déclarer une variable RGB égale à la couleur CVD du point CV, à la couleur CVT. Ensuite, la résolution ronde est l'image IMG, virgule vt color Souligner. Cette fois, je veux convertir BGR en RGB. Celui-ci. Ensuite, je vais afficher cette image. CV d'hémotype que l'on me montre. Si le roundreses est le premier, nous devons transmettre le nom d'affichage, qui est RGB, puis nous devons transmettre le nom de variable RGB. C'est ça. Maintenant, exécutons le code et voyons ce qu'il renvoie. Exécutez également ce code, vous pouvez également le voir écrit dans une version RGB de cette image. Il ressemble maintenant assez au mat car ici nous convertissons une image VGA en image RGB Mais si je l'exécute dans du code, copie dans du code et que je le colle dessus que je commente et décommente à la fois la ligne, et cette fois en tant que variable, je vais passer le RGB et non l'image, définir ce fichier et exécuter à nouveau ce code Vous pouvez maintenant remarquer que cette fois métap renvoie l'image originale réelle, ce qui est similaire à Cat Window Ceci est notre image BGR originale. Maintenant, notre image RGB et notre image BGR se ressemblent car nous convertissons l'image ressemblent car nous convertissons BGR en image RGB à l'aide Ensuite, je passe cette image en image pour qu'elle fonctionne en utilisant matplot leave C'est pourquoi il a renvoyé ce résultat. Juste une chose dont vous devez vous rappeler que le code couleur par défaut de Met Plot Leave est RGB et que le code couleur par défaut d'OpenCV est GR Vous pouvez maintenant voir Harry convertir Bzierimage en niveaux de gris, Bzierimage en HSV, Bier image en LAB Mais Open C. Il y a un inconvénient  : vous ne pouvez pas convertir une image en niveaux de gris en HSV De plus, vous ne pouvez pas convertir directement le HSV en LAB. Si vous voulez faire cela, vous devez d'abord convertir l'image disque en BGR, puis vous pouvez changer l'image BGR en Je vais convertir le HSV en image BGR. Ici, le type est unique et la commande et je tape cette fois je vais convertir H a en BGR. Et d'abord, je vais déclarer une variable de soulignement HHV, GR Elles sont variables et cette fois je vais exécuter C point, CVT color. Insérez cette fonction, je vais d'abord transmettre l'image source, qui est HSV Je vais décommenter cette section. Et cette fois, je vais passer le HSV, celui-ci. Ensuite, je vais passer la couleur, qui est le point CV, la couleur, soulignement et cette fois je vais convertir Hs V en BGR, celle-ci, je vais afficher cette image Alors tapez cv point Non dans les versets de course, dans les codes individuels, je vais d' abord fournir un nom qui est HSV pour BGR Ensuite, je vais fournir la variable. Avant de définir ce fichier, j'exécute ce code, je vais commenter toutes les fonctions de l'image. Je veux montrer l'original. De plus, je ne sais pas quoi leur montrer. J'ai également découvert ces deux lignes. Remettez ce fichier en haut, découpons le code et voyons ce qu' En haut de ce fichier, vous pouvez voir le résultat. Voici notre image originale, et voici notre vidéo HSV Two Pour mieux comprendre, laissez-moi vous montrer l'image du HSV. Si je montre l'image HSE, je vais montrer ce fichier. Après avoir exécuté ce code, comme vous pouvez le voir, c'est l' image originale du chat, je n'en ai pas besoin. Il s'agit de la version HSV de cette couleur, et nous convertissons l'image HSV en Mais nous ne pouvons pas convertir HSV directement en image en niveaux de gris Voilà pour ce tutoriel. Dans ce tutoriel, j'ai essayé de couvrir concept de petits espaces colorimétriques dans OpenCV Merci donc d'avoir regardé cette vidéo Stune pour le prochain tutoriel 13. Canaux de couleur: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre tutoriel, real tate o pensimi Et dans ce tutoriel, nous allons apprendre les canaux de couleur. Dans ce didacticiel, nous allons notamment apprendre à cracher des canaux de couleur et à fusionner des canaux de couleur Une image couleur se compose essentiellement de plusieurs canaux, rouge, bleu et vert. Toutes les images que vous voyez un support numérique sont créées avec trois canaux colorés, rouge, bleu et vert. Les images sont donc créées avec les trois canaux colorés, et OpenCV nous permet de cracher les Comme vous pouvez le voir dans mon répertoire de travail actuel, nous avons une image, PIC point JPG. Si nous ouvrons cette image, comme vous pouvez le voir, nous devons faire trois surgences subtiles avec trois couleurs différentes, rouge, vert , bleu Il s'agit d'une image unique, et OpenCV peut s'adapter aux trois canaux colorés, bleu, vert et rouge C'est ce que nous allons faire dans cette vidéo. De plus, nous allons utiliser cette image et diviser cette image en trois canaux de couleur Donc, pour le canal à trois couleurs, je vais prendre trois variables, B, G R égales à, je vais accélérer les canaux de couleur. Pour cela, je vais taper Cv point, je vais exécuter spit function, Cv point, spit function, speed Et dans la presse ronde, je vais passer l'image IMG. Cette fonction de division va diviser l'image en bleu, vert et rouge. Mais dans un premier temps, quittez conversion de cette image en image en niveaux de gris Et si vous voulez afficher cette image dans une fenêtre pour cela, je vais utiliser la fonction Image show, donc tapez cv point IM show. Ensuite, le tour appuie d'abord, nous devons passer un nom de fenêtre. Au début, je veux montrer la couleur bleue, donc je veux taper le nom de la fenêtre en bleu. C, puis je vais passer la variable longueur B. Ensuite, je vais commencer cette ligne deux t. Ensuite, je veux montrer la couleur verte, et pour la couleur verte, je vais passer la variable G, et la dernière est pour la couleur rouge pour la couleur rouge, je vais passer la variable R. Je vais étouffer. Avant de publier cette citation, permettez-moi de vous dire quelque chose. En gros, cette fonction va convertir cette image en image Griskal Ensuite, en fonction de la valeur du canal de couleur, nous pouvons voir la partie sombre et la partie claire. Laisse-moi te montrer. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez voir ici trois rasoirs Maintenant, ça a l'air assez confus. Il s'agit de l'image originale. Comme vous pouvez le voir sur l'image originale, nous pouvons voir trois couleurs : rouge, vert et bleu. Mais si je vous montre la fenêtre bleue, vous pouvez voir ici que la couleur bleue devient la couleur blanche. Vous pouvez maintenant remarquer que la fenêtre bleue et les cercles bleus deviennent blancs. Maintenant, vous savez peut-être pourquoi il est devenu blanc et pourquoi les deux autres couleurs deviennent noires Comme je vous l'ai dit, quand Opensi a trouvé la couleur bleue sur cette image, cela a augmenté l' intensité de cette couleur Et comme je vous l'ai dit, cette fonction convertit l'image en niveaux de gris Et chaque fois que nous exécutons un canal de couleur bleu dans cette image en niveaux de gris, il s'intensifie et représente la couleur bleue par la couleur blanche Et comme vous pouvez le voir, c' est exactement la couleur bleue. C'est pourquoi il devient de couleur blanche, exactement de couleur blanche. OpenSNI n'a trouvé aucune couleur bleue sur cette image. Je ne trouve aucune couleur bleue sur le cercle vert. De plus, vous ne trouvez pas la couleur bleue dans le cercle de couleur rouge. C'est pourquoi il est devenu noir. De même, lorsque nous exécutons le canal de couleur rouge, cette fois, la couleur rouge devient blanche. Comme vous pouvez le voir, maintenant cercle rouge se transforme en cercle blanc car cette fois il prend la couleur rouge et augmente l'intensité de ce cercle. De la même manière, les canaux de couleur verte fonctionnent. Cette fois, cela augmente l'intensité de la couleur verte. Vous pouvez faire la même expérience avec n'importe quelle image colorée. Mais pour votre commodité et pour comprendre comment cela fonctionne, nous utilisons ce cercle, composé trois cercles de couleurs différentes, rouge, vert et bleu. Et puis Groove Circle, il n' y a pas de couleur verte disponible. C'est pourquoi il prend une couleur noire. Si un pourcentage de couleur verte est disponible à cette portion, il devient un peu plus clair. Et n'oubliez pas que l'image d'origine est dotée de trois canaux colorés et la fenêtre radio verte et la fenêtre bleue n' aucun canal de couleur. Laissez-moi vous le prouver. Si je supprime cette fenêtre et que j'imprime la forme, laissez-moi vous montrer que vous tapez print à l'intérieur du ss rond, je vais taper image, image variable shape. Je vais chercher cette ligne. Et cette fois, je veux imprimer l'un des canaux de couleur bas, supposons le gris. J'attache G. Si je mets ce fichier et que j'exécute ce code sur A, vous pouvez maintenant voir dans mon terminal que nous imprimons d' abord la dimension 300 par 500, nous imprimons d' abord la dimension puis nous imprimons le canal couleur. Dans notre première image, je veux dire l'image originale, nous devons dessiner trois canaux de couleur. Mais dans l'image suivante, qui est une fenêtre verte, nous n'avons aucun canal de couleur. Par défaut, nous pouvons l'appeler valeur de canal de couleur unique, mais en gros, le noir et blanc ne sont pas des couleurs. En gros, dans cette fenêtre, le noir et blanc représentent l'intensité de couleur particulière. Maintenant, je vais commenter les deux lignes, et je vais fusionner ces trois images. Mais avant de commenter cette ligne, l'image originale. Je ne veux pas accéder à cette fenêtre, et pour fusionner l'image des trois canaux courbes, je vais utiliser la fonction de fusion. Tout d'abord, je vais déclarer une variable et le nom de notre variable est merge. Fusionner égal à Is the rounds Hem pour compiler une fonction appelée Marge. Parfois, les points V fusionnent. Est-ce que c'est le laiton rond à l'intérieur des robes carrées que je vais passer. Voici une liste de trois escroqueries, B, G R. Et ensuite je vais afficher cette variable Pour cela, encore une fois, nous devons gérer la fonction civet du FMI. Dans le rond-ress, il faut d'abord transmettre le nom de la fenêtre qui est fusionnée Copiez la variable. C'est la fenêtre fusionnée et je vais passer la virgule, et je vais transmettre la variable dans fusionnée. Et je vais configurer ce fichier. Après avoir défini ce fichier , il est d'abord arrivé à cette fenêtre à trois canaux de couleur. Puis c'est arrivé à la fenêtre fusionnée. Laisse-moi te montrer. Donc, après avoir exécuté le code, vous pouvez le voir, il s'imprime d'abord. Au début, il affichait le canal de couleur bleue, puis rouge, puis vert. Enfin, il affiche le canal de couleur fusionné. Et après avoir fusionné les trois canaux colorés, encore une fois, il renvoie une image colorée. C'est donc pour ce tutoriel. Dans le prochain didacticiel, nous allons en apprendre davantage sur le flou. Merci donc d' avoir regardé ce stade vidéo pour le prochain tutoriel. 14. Flou: Bonjour, les gars, c'est bon de vous revoir. Encore une fois, je suis de retour avec un autre tutoriel lié à Open C. Et dans ce tutoriel, nous allons apprendre le sang. Nous allons apprendre différentes méthodes de floutage. En général, nous lissons et floutons l'image lorsqu'il y a du bruit dans notre image, et en appliquant un peu de flou, nous pouvons réduire le Dans nos précédents tutoriels, nous avons déjà découvert le flou gaussien, qui est la méthode de flou la plus populaire Sans le flou de Gersion, il existe de nombreuses techniques de floutage, et nous allons toutes les apprendre Mais avant de commencer notre pratique, nous devons comprendre quelque chose. Nous devons comprendre ce qui est flou. Comment fonctionne réellement le flou. Ici, je vais ouvrir une image. C'est notre image. Que se passe-t-il exactement lorsque nous appliquons du flou ? Dans un premier temps, nous devons définir ce que l'on appelle noyau. Sinon, vous pouvez l'appeler indo. Ici, à cette position, je vais dessiner une fenêtre. Supposons que ce soit la taille de notre fenêtre. Ici, nous dessinons une fenêtre sur l'image à une position précise. Comme vous pouvez le voir, cette fenêtre a une taille, connue sous le nom de taille du noyau. Et la taille du noyau est essentiellement le nombre de lignes et le nombre de colonnes. Ici, je vais dessiner trois lignes et aussi trois colonnes. Cerdles composés de lignes et de colonnes ou de pixels. Ce sont tous des pixels. Nous avons donc ici un total de trois colonnes et trois lignes, donc la taille de son noyau est de trois par trois. En gros, que s'est-il passé ? Nous avons plusieurs méthodes pour appliquer le flou. Le flou est appliqué à ce pixel central, et ce pixel est appliqué pour obtenir des pixels arrondis frauduleux Il applique le résultat des pixels environnants à celui du milieu. Discutons de la première méthode de flou, qui est la moyenne Donnons accès à votre code aux utilisateurs. Et ici, je vais taper une commande sur une seule ligne hasta et je vais taper average La question est maintenant de savoir comment fonctionne la moyenne du flou. Si j'ouvre à nouveau cette image, comme je vous l'ai dit, b s'applique toujours au pixel central et le flou moyen fonctionne en fonction de la moyenne des pixels environnants Supposons que cette valeur d'intensité des pixels soit égale à deux. Celui-ci en a cinq. Celui-ci en a sept. Celui-ci en a trois. Celui-ci en a quatre. Il y en a encore deux. Celui-ci en a huit, et celui-ci en a neuf. Comme vous, l' intensité du pixel moyen est de quatre. Maintenant, il va extraire toute la valeur d'intensité des pixels, appliquer cette valeur et appliquer cette valeur au pixel du milieu. C'est ainsi que fonctionne le calcul de la moyenne. En gros, vous voulez dire que la moyenne des pixels environnants sera appliquée au pixel central Revenons à votre code pour les utilisateurs. Pour appliquer le flou, je vais d'abord déclarer une variable et notre variable est moyenne Moyenne égale à la méthode CV point Blur. Ensuite, au lieu de passer d'abord, nous devons d'abord transmettre la source, l'image source, qui est ING. Ensuite, nous devons définir la taille du noyau. Et pour la taille du noyau, je vais prendre trois colonnes et trois lignes asi. Et nous pouvons afficher cette image dans notre fenêtre Je vais donc lancer CV point If Mthood dans le rond du code unique, abord, je vais fournir un nom de fenêtre moyen, virgule, puis je vais passer la variable, qui est Si je place ce fichier et que j'exécute ce code dans mon terminal, comme vous pouvez le voir, c'est à la fois l'image. C'est l'image originale du chat, et c'est l'image floue moyenne Si je l'ouvre côte à côte, vous pouvez voir la petite différence. Il a l'air assez net, mais celui-ci n'est pas net car ici nous appliquons un flou moyen Et si vous voulez augmenter l'intensité du flou, il suffit de transmettre une valeur de noyau plus élevée Laisse-moi te montrer. Donc, sans utiliser une taille de noyau trois par trois, je suis là pour passer sept par sept, définir ce fichier et exécuter à nouveau ce code. En exécutant ce code, vous pouvez comprendre la différence. Pour augmenter la valeur du noyau, cela augmente également le flou de cette image Appliquons maintenant un autre flou, Gasianblur. Supprimez les deux fenêtres et tapez ici un autre commentaire unique Gersionblur Pour appliquer le Gersionblur, une herbe doit déclarer une autre variable égale à Cm ce qui concerne les presses rondes, nous devons d' abord transmettre l'image source, qui est ING, puis nous devons fournir la taille du noyau et ici je vais appliquer sept Casern Également pour passer le Sigma X. Il est utilisé pour la déviation de dictée X. Pour l'instant, je vais mettre zéro, et je vais afficher cette image sur une fenêtre. Je vais donc copier celle de Mthod et la coller ici Je vais renommer Average avec Gertian. Modifiez également le nom de variable GUS. Si je définis ce fichier et que j'exécute ce code dans mon terminal, vous pouvez maintenant comparer les deux échantillons de sang. C'est un flou moyen et c'est Gasienbld. Mais vous pouvez remarquer ici que nous utilisons la même taille de noyau sept par sept. Mais en moyenne, il a appliqué plus de sang, mais chez Gasian, cela ressemble à du sang naturel C'est pourquoi nous utilisons le Gersienbl la plupart du temps , car il semble Ensuite, nous allons appliquer un autre sang. Laisse-moi te montrer. Ou le nom suivant est Median Blood. L'hémotype est unique et contient une quantité médiane de sang. Ensuite, Hembo déclare une médiane. Médiane égale au point C du sang. Ensuite, vous réglez les ronds en premier L pour transmettre l' image source qui est IMG. Au lieu de transmettre la taille complète du noyau, passez ici un entier. Supposons que je passe trois fois. Maintenant, ouvrez C, nous pouvons supposer que la taille de son noyau est de trois par trois. Maintenant, affichons l' image dans une fenêtre Je vais donc copier le capot de la carte Imro et le coller ici Je vais d'abord remplacer le nom de la fenêtre. Je vais faire en sorte que ce soit médian. Je vais également remplacer la longueur variable. Medium, définissez ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez maintenant comparer les deux flous Il s'agit d'une image normale. Il s'agit du flou médian, du Gasionblur et Peut-être que vous ne comprendrez pas le flou si j'augmente la valeur, laissez-moi vous montrer Je vais ouvrir toute la fenêtre et augmenter la valeur de la taille du noyau. Je vais passer à neuf , puis redéfinir ce fichier et exécuter à nouveau ce code. Vous pouvez maintenant voir l'effet de flou médian. Si vous comparez l'effet de flou à d'autres effets de flou, cela ressemble à Oil t. Maintenant, appliquons le premier effet de flou, qui est un flou qui est Donc ici, je vais créer un single commenter et le taper. Flou bilatéral. Le flou bilatéral n'est pas un flou. Il s'agit d'un filtre. Il est très efficace pour éliminer le bruit tout en gardant les bords nets. Mais cette opération est plus lente que si je la compare à d'autres filtres. En utilisant le flou bilatéral, vous pouvez numériser votre image. Vous pouvez également conserver la netteté des bords. Ici, je vais déclarer une variable appelée bilatérale, donc je copie ce nom et je vais déclarer une variable bilatérale égale à Here appelée filtre bilatéral. Certains monteurs bilatéraux à points CV. Ensuite, vous dites le RundressSF dont nous avons besoin pour transmettre l' image source qui est une variable IMG, puis nous devons transmettre le dilatéral et je vais définir Ensuite, nous devons transmettre cette couleur Sigma. Je vais le mettre à 154 maintenant. La valeur suivante, nous devons passer l'espace Sigma. Je vais aussi le passer et je veux aussi le mettre à 15. Maintenant, affichons l'image. Je vais copier le fer à repasser de Math Wood et je vais le coller ici. abord, je vais remplacer le nom de la fenêtre, Blteral, puis je vais coller le nom du puits, Blteral, je vais définir ce Après avoir défini ce fichier, si j'utilise ce code dans mon terminal, vous pouvez voir ici le résultat DE. C'est BilterAlbla. Je pense que c'est assez similaire à notre génome. Augmentons la valeur et passons à neuf. Et aussi, je vais indiquer les valeurs Sigma 75 et 75. Après avoir défini ce fichier, si j'ai le score dans mon terminal, voyons maintenant ce qu'il a écrit Vous pouvez maintenant le comparer à l'image d'origine. C'est ainsi que fonctionne le filtre bilatéral. Il s'agit de l'image d'origine et du flou du filtre bilatéral Voici donc les quatre types de flous que nous pouvons appliquer dans OpenCV J'espère que vous comprenez maintenant comment appliquer un flou différent dans un CV ouvert Merci donc d'avoir regardé cette vidéo Studio pour le prochain tutoriel. 15. Opérations BITWISE: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un nouveau tutoriel lié à OpenCV. Et dans ce tutoriel, nous allons apprendre le fonctionnement de Batis Dans OpenCV, il existe quatre opérateurs Biti. Le premier est N XR et le dernier opérateur est nul. Dans OpenCV, les opérateurs Bitois sont utilisés pour fonctionnement au niveau des pixels entre deux images ou entre une image et un masque Ces opérations sont utiles pour des tâches telles que le mélange, le masquage et la manipulation de parties spécifiques d'une image, etc. Comme je vous l'ai dit, nous devons le dire à l'opérateur BTI. Tout d'abord, je vais taper une seule commande de prêt ici. Non, je vais utiliser des comen de plusieurs longueurs pour cela. Ensuite, dans la commande multiligne, je vais coller tous les noms de l'opérateur et à quoi nous les utilisons Comme je vous l'ai dit, il s'agit du premier opérateur, BTI. Il applique une opération logique à chaque pixel de deux images ou d'une image et d'un masque. répertoire suivant, nous avons BTs ou il applique une opération logique Ensuite, nous avons bitwis ZR. Il applique une opération ZR logique Le dernier mot est « non » au niveau du bit En gros, il inverse les pixels. Vous pouvez le comparer à un opérateur de nœud logique. N'oubliez pas qu'un opérateur bit à bit travaille dans un réparateur binaire. Si nous passons une valeur nulle, s'éteindra le pixel s'éteindra et si nous passons une valeur, le pixel sera activé. Je le représente en blanc et en noir. Importons maintenant un autre module, num pipe, Hemotpimport, numb Pi Ensuite, je vais prendre une variable appelée Blend et je la définirais comme NP point zéro est au RunSSF, nous devons fournir la forme de cette fenêtre Je vais prendre ici, je vais définir la taille de la fenêtre 400 400. Nous devons également fournir le type de données. Le type D est égal à deux, c'est-à-dire à un seul code INT huit. En gros, elle crée une image noire vierge et nous disons hauteur 400 et largeur 400. En gros, nous allons utiliser cette image vierge comme base pour dessiner un rectangle et un cercle. Ensuite, je vais créer un rectangle dans cette image vide. Je vais taper une variable ReCT assignée avec la méthode cv dot rectangle. Rectangulaire. Ensuite, à l'intérieur de la presse ronde, nous devons d'abord passer l'image dans laquelle nous allons utiliser pour créer le rectangle. Je souhaite utiliser une copie à points blancs. Je vais prendre une copie de cette image vierge. Ensuite, nous devons définir la marge. Nous devons définir la marge entre Xs et Y xs. Je vais le prendre 30 à 30. Ensuite, nous devons définir la taille du rectangle. Je vais prendre 370 pixels par 370 pixels, puis nous devons fournir de la couleur. Comme vous le savez, c'est une image binaire, donc je ne vais pas utiliser trois canaux de couleur, donc je vais en fournir 255, juste de la couleur blanche. Et enfin, il faut dépasser l'épaisseur. Je vais donc passer négatif moins un car cette image sera affichée en blanc. Après avoir créé le rectangle, nous devons créer un autre cercle. Je vais donc créer une variable circulaire, cercle égal à CV, un cercle métallique. Ensuite, à l'intérieur des rondeurs, nous devons d'abord définir l'image Dans quelle image je veux créer cette su tapez fade, point, copie, puis nous devons définir la position centrale de ce cercle Je vais passer les 200 par 200. Ma, alors je vais fournir un rayon à ce cercle, qui est de 200, et aussi fournir la couleur. Je vais donc utiliser une seule couleur, donc je veux passer 255, entièrement de couleur blanche. Après cela, nous devons passer l'épaisseur de ce cercle, donc je vais passer moins un pour remplir le cercle de couleur blanche. Ensuite, nous devons afficher à la fois la forme géométrique dans différentes fenêtres Il exécute la méthode run, C, point, IN so, Non à l'intérieur de la barre ronde à l'intérieur du single en premier, je veux afficher le rectangle, donc attachez le rectangle. Ensuite, nous devons fournir le nom de la variable, qui est rec. Ensuite, je veux afficher le cercle. Je vais remplacer le rectangle par un cercle et nous devons également remplacer le cercle de longueur variable. Je vais configurer ce fichier. Maintenant, après avoir défini le fichier, exécutons le code et voyons ce qu'il va renvoyer. Après avoir exécuté ce code dans mon terminal, vous pouvez voir que nous avons ici les deux images avec lesquelles je vais travailler. C'est un rectangle et c'est un cercle. Commençons maintenant par le premier opérateur Btis de base. Commençons donc par notre premier opérateur Bitwise, qui est un Bitwise A. Créatif, unique et courant avant de parler de bitwis et d'opérateur, laissez-moi vous montrer à quoi Donc, dans un premier temps, je vais déclarer une variable bit à bit Bowie, underscore, N N, et égale à C point, bit à bit bois, puis à l'intérieur des presses rondes, doit passer à la source. Donc, en tant que source, je vais passer le rectangle DC et en tant que source également, nous allons passer le cercle. Oups, l'orthographe des cercles est incorrecte, donc je vais corriger CR Et maintenant je vais montrer ce résultat dans une autre fenêtre. Ici, je vais lancer CV, point, on for method, M show. Ensuite, à l'intérieur du round, nous devons d' abord passer le nom de la fenêtre, qui est Bitwise A. Je copie le nom de la variable tel quel et je le colle ici Ensuite, pour fournir l'image source, qui est N bit à bit, cette variable Je souhaite configurer ce fichier. Après avoir défini ce fichier, je vais exécuter le code dans mon terminal. Un Unicode, comme vous pouvez le voir, c'est le résultat du Bitois et de l'opérateur Opérateur bit à bit et opérateur ont pris ces deux images, les ont placées l'une au-dessus de l' autre et ont renvoyé la raison de l'intersection Si je déplace ce cercle au-dessus du rectangle, renvoie la zone d'intersection commune de la forme combinée, représente la zone de raison commune blanc et que je supprime l'autre section Passons maintenant au mode bit à bit ou à l'opérateur. Ici, je vais commenter cette diapositive. Ensuite, je vais taper un autre single et une autre commande et je vais taper bitwise ou operator ou, en gros, bitwis orbor renvoie la zone d'intersection, il renvoie la zone non croisée Laisse-moi te montrer ça. Encore une fois, je vais taper une variable bit à bit ou bitwis égale à c point bitwis Ensuite, c'est au rond-point que je vais passer le rectangle Ensuite, en tant que source, je vais passer le cercle. Si j'affiche cette image dans une fenêtre, je tape donc C point et informo. Ensuite, au RoundressF, nous fournissons un nom de fenêtre qui est BTI R. Ensuite, nous devons fournir la source, l'image source Après avoir défini ce fichier, si je ne code pas dans mon terminal, vous pouvez maintenant remarquer, comme je vous l'ai dit, qu' il renvoyait la zone d' intersection qu'il renvoyait également la zone de non-intersection. Il a combiné le résultat commun avec une raison inhabituelle et a créé une nouvelle forme. Passons maintenant au prochain opérateur Bitwie. Pour cela, je vais écrire une autre commande à extrémité unique, mais avant de commenter cette ligne, je vais créer une autre extrémité bit par bit Je vais taper l'opérateur undersco Z bitwise, Bitwise et le nom de cet opérateur est Voyons ce que ça va faire. Je crée une autre variable, BitWisUnderscore, Zo égale En gros, il renverra la raison non croisée. Laissez-moi vous montrer le type Sol, CV, point, Bis, Zr. C'est le Runbss au début, je vais passer le rectangle Ensuite, je vais passer le cercle. Et je vais afficher cette image. Alors tapez, CV point, je suis fmthod. Je suis une émission. Ensuite, au lieu de me déshabiller, je vais d'abord fournir un nom de fenêtre comme nom fenêtre et transmettre le même nom de variable, zone BTI Ensuite, nous devons passer la zone BTI variable. Maintenant, définissons le fichier, exécutons ce code dans notre terminal et voyons ce qu'il renvoie. Jusqu'à ce code dans mon terminal, comme vous pouvez le voir, comme je vous l'ai dit, il renverra la raison non croisée Si nous plaçons cette image l'une au-dessus de l'autre, cela créera une raison qui se croise et une raison qui ne se croise pas et Za renverra la raison qui ne se croise renverra la Ces opérateurs sont très utiles pour les IST. Parlons maintenant du dernier opérateur Bitwis, qui est BitWisno Donc, ici, je vais taper un autre commentaire final et je vais taper BitWisptisn En gros, il ne renvoie rien, il inverse la couleur binaire Il a transformé le blanc en noir et le noir en blanc. Laissez-moi vous le prouver. Donc, ici, je vais déclarer qu'une variable appelée beat n'est pas sous-évaluée. Rien n'est égal à la pensée de Civ , bit à bit, rien. Alors, à l'intérieur de ces robes rondes pour le moment, je vais passer ce cercle. Pour montrer l'exemple, il n'est pas nécessaire de combiner les deux formes géométriques Nous n'avons besoin que d'une seule forme géométrique. Dans notre cas, je vais utiliser ce cercle, puis C a pensé que je venais de Matin. Ensuite, à l'intérieur des robes rondes, nous devons d' abord fournir la nuque de la fenêtre Je vais copier la même variable leap que Window nip, puis nous devons fournir la variable Et je vais configurer ce fichier. Après avoir défini ce fichier, je vais également commenter cette ligne, je n'ai pas besoin de cette ligne pour le moment. Je ne sais pas comment montrer celui-ci. Donc, après avoir défini ce fichier, si j'exécute ce code dans mon terminal, comme vous pouvez le voir, ce n' est pas un opérateur Btis Comme je te l'ai dit, ça inverse la couleur. Ne pas inverser la couleur. En gros, il transforme zéro en un et un en zéro. C'est pourquoi notre objet a l' air noir et notre extérieure du cercle et la zone de la fenêtre sont blanches. C'est tout pour cette structure. J'espère que vous comprenez à quoi servent les opérateurs BTs et comment nous pouvons les utiliser Il est essentiel de savoir que ces opérateurs sont très importants lorsque nous travaillons avec nous. Ne vous inquiétez pas, nous allons en apprendre davantage à ce sujet dans les sections consacrées aux projets. Merci donc d' avoir regardé cette vidéo. Restez à l'affût pour le prochain studio. 16. Masquage: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre tutoriel, relatif à Python open CV. Et dans ce tutoriel, nous allons parler du masquage Dans notre précédent tutoriel, nous avons parlé de l'opérateur BTI, et en utilisant essentiellement l' opérateur BTI, nous exécutons Musk Dans une phrase simple, mousquin est utilisé pour se concentrer sur la raison spécifiée d'une image tout en ignorant les autres positions En semi-session ouverte, le muskin est utilisé pour se concentrer sur la raison spécifiée d'une image tout en ignorant les autres. Pour ce faire, on crée une image de masque binaire dans laquelle les autres résultats des intersets sont blancs et le reste est laquelle les autres résultats des intersets sont blancs et le reste Comme vous le savez, le blanc représente 255 et le noir représente zéro. Et le masque peut être appliqué à l'image d'origine pour filtrer ou manipuler les zones souhaitées. Supposons que si vous avez une image de personnes et que vous souhaitez vous concentrer uniquement sur leur visage, dans ce cas, vous pouvez appliquer un masque sur leur visage et masquer les zones inutiles. Voyons maintenant comment cela fonctionnait dans Open C. Comme vous pouvez le voir, ici je lis un fichier et j' affiche cette image. Ensuite, je vais importer le numbi moding car nous allons créer une image vierge en l'utilisant Donc je suis en train de taper, d'importer NumPi en tant que N P. Ensuite, je vais créer une image vide Ici, je vais déclarer une variable vide, égale à Np point zéro. Ensuite, dans le cadre du processus rond, pour fournir la forme à saisir, je tape une image, un point, une forme. Ensuite, à l'intérieur de la résine carrée, nous devons fournir la dimension de la forme N'oubliez pas que la dimension du masque est très importante. Nous devons prendre la même taille de cette image. Ici, je vais passer deux points et nous devons également prendre le type de données pour le type Tata de type D. Est célibataire à Imo type I NDA. Et si vous souhaitez afficher cette image vierge, vous pouvez simplement taper Cm point, et pour la méthode. Ensuite, à l'intérieur de la manche, le héros tape noir et coma, et je vais passer la variable noir. Je vais satisfaire. Maintenant, je vais dessiner un cercle sur l'image vide et je vais appeler le masque. Ici, je vais créer une variable appelée mask equal to mask, égale à C point subcal À l'intérieur de la cavité ronde, nous devons d'abord passer l'image où nous allons créer et dessiner le masque Alors, passe le noir. Ensuite, nous devons passer la position centrale, et saisir le centre pour définir la position centrale, son type, son image IMG, son point, sa forme Est-ce le renfoncement carré, un divisé, divisé par deux Et ensuite, l'image, le point, la forme, c'est un carré divisé par zéro, divisé par deux. Et maintenant, nous devons également passer le rayon pour le rayon. Pour le moment, je vais prendre 100 pixels, puis nous devons passer la couleur et je veux 55 couleurs entièrement blanches épaisseur égale à moins un pour remplir le cercle de couleur blanche. Et maintenant, nous devons afficher ce masque sur l'image pour ce type de casque. C V, je le montre ensuite dans tels ronds au début pour fournir un nom de fenêtre, qui est Ensuite, nous devons fournir le masque variable. Dans quelle image nous voulons créer un masque, celui-ci. Et si vous êtes sous-écossais, les trois images s' afficheront Cela va ouvrir un total de trois fenêtres. Laisse-moi te montrer. abord, il va ouvrir l'image du chat, puis il va ouvrir l'image vide, et voici notre image de masque. Et maintenant je vais utiliser l'opérateur Bitwise pour le masquer. Pour cela, je vais créer un autre masque variable égal à CV point par bit et par opérateur bit à bit Ensuite, à l'intérieur de la résistance ronde, je vais d'abord passer l'image comme source, IMG Coma , l'image comme deuxième source, puis nous devons taper mask égal à Je vais transmettre cette variable appelée mask. Donc, en utilisant le mode bit par bit et l'opérateur, nous appliquons ce masque circulaire sur cette image Donc, si j'affiche cette image, je vais taper Ammtho, copier cette ligne et la coller ici et remplacer le masque par le masque Ils ont défini ce fichier puis codé dans mon terminal. Voyons ce qu'il a loué. Comme vous pouvez le constater, c'est ce qu'il a loué. Voici l'image de notre masque. Après avoir appliqué le masque, voici comment il ralentit. Au début, nous avons pris cette image, puis nous l'avons placée par-dessus cette image d'origine et nous avons créé un masque. En gros, bits et opérateur, nous avons obtenu le résultat d'intersection de cette zone Si vous voulez déplacer cette masse, oui, vous pouvez, laissez-moi vous montrer comment modifier les coordonnées. Donc, ici, je vais découvrir les lignes inutiles. Je n'en ai pas besoin, alors je commente tout cela et ici, divisé par deux, je veux déplacer le masque, donc je veux ajouter un je veux déplacer le masque, pixel renforcé. Ici, j'ajoute des informations fortifiées avec ces coordonnées. Après avoir défini ce fichier et sur ce code, vous pouvez voir que nous déplaçons la zone du masque, nous déplaçons la position du masque. Au lieu d'utiliser un cercle, vous pouvez utiliser un rectangle désactivé. Il suffit de l'utiliser pour remplacer le cercle par un rectangle. Juste une chose à retenir avant d'appliquer le masque. Vous devez prendre la taille réelle de l'image pour une image en noir. Si vous utilisez une autre dimension, supposons que la flèche soit plus grande que celle-ci, elle lancera une flèche En utilisant la forme de l'image, nous saisissons ici les deux variations de résolution de l'image. Et si nous le changeons, cela provoquera une erreur. Permettez-moi de vous montrer l'exemple. Je veux dupliquer la diapositive et commenter précédente ici au lieu d'utiliser la forme exacte de cette image, je vais en prendre 300 par 300. Si je l'enregistre, ce code indique non, comme vous pouvez le voir, c'est 30. Cela ne fonctionnera pas car nous devons prendre la forme réelle de l' image pour créer le masque. Je vais commenter cette ligne, décommenter la ligne précédente, définir ce fichier et exécuter à nouveau ce code. Vous pouvez maintenant le voir renvoyer le résultat. C'est ainsi que nous pouvons appliquer le masque. J'espère que c'est clair pour toi maintenant. Merci d'avoir regardé cette vidéo statutaire pour le prochain tutoriel. 17. Histogramme de l'image en gamme de gris opencv: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un nouveau tutoriel lié à Python open CB et dans ce tutoriel, nous allons apprendre l'histogramme Maintenant, la question est : qu'est-ce qu'un histogramme ? Un histogramme est un graphique qui trace la distribution de la valeur d' une variable numérique sous la forme d'une série de Nous allons le comprendre lorsque nous commencerons notre pratique. Comme vous pouvez le voir, j'ouvre ici un fichier Python man point Pi et j'importe une image, et j'affiche cette image en utilisant Imghofunction L'histogramme vous permet essentiellement de visualiser la distribution de l' intensité des pixels dans une image Qu'il s'agisse d'une image en couleur ou d'une image en niveaux de gris, vous pouvez visualiser l'intensité des pixels Vous pouvez comprendre la distribution de l'intensité des pixels à l'aide de l'histogramme Ce qui est comme une prise ou un complot. Cela vous donnera une grande intuition de la distribution des pixels dans l'image. Nous pouvons calculer un histogramme pour image Griske et calculer un histogramme pour les Nous allons commencer par le calcul de l'histogramme pour Griskalimages Dans un premier temps, je vais convertir cette image en image en niveaux de gris Pour cela, je vais déclarer une variable appelée gris gris égale à Cv point CVT Color dans les robes rondes. Je passe la variable IMG Image, virgule, puis je vais convertir cette image ZR en image Grisker , le résumé utilise CV, point, couleur, soulignement BGR , Celui-ci. Ensuite, je vais afficher cette image dans notre fenêtre. Je tape CV. Je vais taper CV, point, méthode iMS, IM so. Ensuite, vous avez d'abord dit « robes rondes je vais fournir un nom d'affichage gris. Ensuite, je passe dans le coma et là je vais passer la variable, le gris. Maintenant, pour calculer réellement l'histogramme grascal, ce que nous devons faire essentiellement, d'abord, je vais d'abord déclarer une variable et notre variable est gray, soulignement hist, histogramme gris, égale au CV enseigné. Ici, je vais utiliser une méthode, qui est calc hist, calc hist ce que nous devons faire essentiellement, d'abord, je vais d'abord déclarer une variable et notre variable est gray, soulignement hist, histogramme gris, égale au CV enseigné. Ici, je vais utiliser une méthode, qui est calc hist, calc hist, celle-ci. Ensuite, dans la pause d'exécution , nous devons calculer l'historique de l' image dans laquelle nous passons Et ici, nous ne cherchons qu' à transmettre une image en écailles de gris. Je copie cette variable grise et je la mets ici. Apacoma, alors nous devons passer le canal couleur, et à l'intérieur de l'évidement carré, je vais passer zéro parce que nous en niveaux de gris, pas une image colorée Maintenant, la prochaine chose à faire est de fournir un masque. Donc, ici, si vous souhaitez obtenir la position spécifique d'une image à l'histogramme, vous pouvez spécifier la position du masque Mais pour l'instant, je vais utiliser l'image entière, donc je ne vais en transmettre aucune. Ensuite, nous devons fournir la taille t et la taille est essentiellement le nombre de bits que nous voulons utiliser pour calculer l'histogramme Lorsque nous parlons d'histogramme graphique, nous devons comprendre le concept de B. Mais pour l'instant, il suffit de définir deux, cinq ou six Nous devons également encapsuler cette valeur sous forme de liste. Ensuite, nous devons spécifier la plage de toutes les valeurs possibles, de toutes les valeurs de pixels possibles. Dans notre cas, à l'intérieur du carré, je vais passer de zéro virgule à cinq, six, et c'est tout Je vais maintenant importer un module, matplot leap. Ici, je vais importer matplot leap en tant que PLT. Tapez donc import Mc plot leave en tant que PLT. En gros, à partir de ce module, je souhaite importer Pi plot leave. Ici, je vais passer McLoteapTPI plot leave Pight puis je vais taper J'appelle cette méthode, et ensuite je vais taper le titre du point PLT Ensuite, dans Us Rounder, nous devons définir un niveau et notre niveau est une échelle de gris Il s'agit d'un histogramme en niveaux de gris. Je vais taper un histogramme en niveaux de gris. Ensuite, je vais définir l'étiquette X. Tapez donc PLT, point, niveau X. À l'intérieur des rondelles, je vais appeler ces poubelles. Ensuite, nous devons définir les niveaux Y. Tapez donc PLT, point Y niveau. Ici, nous devons passer le nombre de pixel par pixel. Enfin, nous devons utiliser le tracé PLT, diagramme à points. Et à l'intérieur de la niche ronde, je vais passer le très célèbre histographe des niveaux de gris De plus, nous devons définir le franchissement de la limite du x. Je vais taper PLT line. Pendant la pause, je vais vous transmettre la liste du 22 au 56 Enfin, nous pouvons afficher cette image. Ici, je vais taper PLT dot show Method. Je vais donc configurer ce fichier. Après avoir défini ce fichier, je vais exécuter ce code dans mon terminal. Pour exécuter ce code dans mon terminal, voici l'image de l'histogramme Il s'agit de l' histogramme en niveaux de gris de ce chat. Il s'agit essentiellement de la distribution des pixels dans cette image. Comme vous pouvez le constater, le nombre de faisceaux entre les X représente les intervalles entre les intensités des pixels Donc, comme vous pouvez le constater, il y a un pic à cette position. Cela signifie que cela représente près de 125 bacs. Cela signifie que sur cette image, il y a près de 9 000 pixels et plus qui ont une intensité de 125 En gros, je veux dire qu'à cette position, l'intensité des pixels dépasse près de 9 000 Il s'agit donc essentiellement de calculer l'histogramme des niveaux de gris pour l'ensemble de l'image Maintenant, ce que nous pouvons faire, c'est essentiellement créer un masque. Ensuite, nous pouvons calculer l'histogramme uniquement pour le masque en question et pour créer le masque, nous devons importer le module Numbi Donc ici, je vais taper import Numbi en tant que NP. Pour créer le masque, ici, je vais déclarer une variable appelée blank, blank égale à Heuse une méthode appelée np point zéro n'y a pas de point zéro dans les arrondis ici, nous devons saisir la forme de l'image Image en forme de point et je veux saisir pour indiquer que deux valeurs à l'intérieur du carré sont deux points, les deux premières valeurs. Cela va créer une image vide de la même taille. Ensuite, nous devons fournir la valeur de type D. Type D égal à huit dans l'interface utilisateur à cours unique NT. Ensuite, je vais créer le masque en utilisant l'image vide. Donc ici, je vais taper la largeur assignée au masque égale au cercle de points CV. Nous allons créer un masque circulaire. À l'intérieur des presses rondes pour dessiner ce cercle, nous devons d'abord fournir l' image, qui est noire. Ensuite, nous devons définir la position centrale pour définir la position centrale à l'intérieur des presses rondes. Il doit utiliser la forme d'un point d'image. À l'intérieur des robes carrées, je vais passer la première valeur et elle est divisée par deux, nous devons saisir la position centrale verticale et horizontale. Egomotypeimage, point, forme, c'est ce que dit l'adresse carrée, je vais passer zéro divisé, divisé deux Ce calcul va fournir la position centrale de cette image. Ensuite, nous devons fournir le rayon de ce cercle, qui est de 100 pixels. Ensuite, nous devons fournir la couleur. Pour la couleur, je vais utiliser 255 couleurs blanches, une seule couleur blanche et je veux également remplir ce cercle. Je passe moins un vu. Il s'agit de la valeur de l'épaisseur. Si on passe moins un, le cercle sera rempli de blanc. Ensuite, je vais montrer ce masque dans la fenêtre N. Je vais donc utiliser Andromthod v point IM et configurer le RunRessF. Je vais déclarer un masque de nom de fenêtre, un masque, et je vais transmettre Je vais maintenant créer l'histoum en niveaux de gris pour ce masque Je vais définir ce paramètre de masque comme masque. Au lieu d'utiliser un masque d' hémotype nonne. Mais avant d'exécuter ce code, je pense avoir fait une erreur. Ce n'est pas un masque, c'est un cercle. C'est un cercle. Il crée un cercle. Ici, nous créons uniquement ce cercle. Nous n'appliquons pas de masque sur cette image. Donc, pour créer le masque, nous devons utiliser l'opérateur Bitwise. C'est très stylistique. Donc, j'ai déclaré le masque égal au point CV et pour utiliser l'opérateur de fin Bie bit à bit et pendant ces rondes, je veux d' abord sélectionner l'image d'échelle de gris, cette source comme source, le gris comme deuxième source, également le gris et pour utiliser l'opérateur de fin Bie bit à bit et pendant ces rondes, je veux d' abord sélectionner l'image d'échelle de gris, cette source comme source, le gris comme deuxième source, également le gris multipasse. Et nous devons transmettre un masque, valeur de masque égale à un cercle, un cercle. Ici, nous appliquons ce cercle sur l'image en niveaux de gris sous forme de masque Je vais configurer ce fichier et exécuter ce code dans mon terminal. Pour lancer le scude dans mon terminal, vous pouvez voir le résultat ici Il s'agit de la zone du masque. Voici le résultat de l'histogramme de cette image de masque. Vous pouvez maintenant remarquer qu'il y a beaucoup de pointes sur cette image d'histogramme car la plupart des zones sont blanches C'est pourquoi l'intensité des pixels est élevée sur cette image. Comme vous pouvez le constater à la position 30 Bins, nous avons une intensité de 500 pixels. C'est ainsi que nous pouvons calculer l'histogramme de l'image en niveaux de gris. Dans le prochain tutoriel, nous allons apprendre comment utiliser un histogramme d'image coloré C'est tout pour ce tutoriel. Merci d'avoir regardé cette vidéo, restez connectés pour le prochain tutoriel. 18. Histogramme de l'image couleur: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre histogramme lié au didacticiel, et dans ce didacticiel, nous allons apprendre comment extraire le graphique d' histogramme d'une image de Cana Comme vous pouvez le constater, je saisis déjà nos importantes bibliothèques, CV 2 et Mt plot leave. Ensuite, j'ai déjà lu le fichier image en utilisant la fonction image it. De plus, j'affiche cette image organique en utilisant la méthode IM So. Ensuite, nous devons créer une nouvelle fenêtre de figure pour le graphique de l'histogramme Pour cela, je vais taper PLT dot figure, puis nous devons passer la robe ronde Ensuite, nous devons définir le titre du diagramme d'histogramme. Pour cela, je vais taper le titre du point PLT. À l'intérieur de la résolution ronde, je vais passer le titre nm et nom du titre est un histogramme en couleurs Ensuite, nous devons prendre le nom du niveau X pour cela, je vais taper PLT point X level Dans les robes rondes , je vais prendre des haricots. Nivelez les Xx sous forme de faisceaux, chaque faisceau représentant une valeur d'intensité de couleur comprise entre 2 De la même manière, je vais passer au niveau Y. Je duplique cette ligne et remplace X par Y. Ici, je vais taper le nombre de pixels, le nombre de pixels. Les Y x représentent le nombre de couleurs en pixels pour chaque niveau d'intensité de l'histogramme Jusqu'à définir les niveaux de titre et la figure. Ensuite, nous devons créer un tuple. Ici, je vais lier un nom de variable et le nom de notre variable est color. Comme je vous l'ai dit, les couleurs sont égales à celles d'un tupel, donc je vais utiliser briss ronds, côté bris rond, ici, je vais prendre la valeur totale de trois rubans adhésifs Notre première valeur est B, B pour le bleu. Ensuite, je vais prendre G. G pour le vert, et notre dernier est R, R pour le rouge, R pour le rouge, R pour le rouge. Comme vous le savez, les images V s'ouvrent par défaut en mode RGB. Nous définissons ici une bande avec des étiquettes de canal de couleur pour indiquer le canal de couleur en cours de traitement. Ensuite, je vais faire un flop de suivi pour itérer l' ensemble du canal de couleur Je vais taper quatre, j'appelle par une virgule, l'appel représente la couleur Et je représente index in enumerate inside the rounds colors. Ensuite, dans cette boucle automnale, je vais créer l' histogramme, l'image de l'histogramme Hemo tape une variable nommée HIST égale à CV Je vais utiliser une méthode appelée calc hit, calc Ensuite, au cours des rondes, nous devons transmettre une liste, et comme premier élément de liste, je vais transmettre la séquence, qui est l'image IMG. Cette variable. Ensuite, nous devons passer le canal, le canal couleur. Quel canal de couleur je souhaite cibler ? Un jour, j'ai envie de cibler l' ensemble du canal couleur. Je vais transmettre le numéro d'index. Au lieu de cela, les adresses carrées que je vais transmettre sont, puis je vais passer le masque. Pour l'instant, je ne vais pas appliquer de masque, donc je ne vais en passer aucun ici. Ensuite, nous devons définir la taille du hist et pour sa taille je vais passer à l'intérieur du carré sus 256 Ensuite, nous devons spécifier la plage d' intensité à prendre en compte pour l'histogramme Ici, à l'intérieur de la mer carrée, je vais passer le 02-55 Dans un premier temps, nous passons l'image source. Ensuite, nous indiquons le canal de couleur, zéro pour le bleu, un pour le vert , deux pour le rouge, et je veux tout cibler, ici je passe I. C' est le numéro d'index du canal de couleur. Je représente le numéro d'index et appel représente le membre du canal de couleur. Maintenant, la variable hist stockait les valeurs d' histoom calculées, qui indiquent la fréquence de chaque intensité de pixel dans ce canal de couleur Nous devons maintenant tracer les données d'histoom pour le canal de couleur actuel Pour cela, il utilise un diagramme de type MEER, PLT. Ensuite, à l'intérieur des presses rondes , nous devons d'abord passer un arc, arc comme ici sous forme d'arc, je vais passer Hite, cette variable Ensuite, nous devons passer la couleur. Couleur égale à la variable d'appel. Ensuite, nous devons définir une limite d'excédent X à partir de 022 56 pour correspondre à la plage d'intensité Pour cela, HerramtyGPLT, point lime, limite. Pendant le tour, appuyez ici pour passer un élément de la liste à partir du 022 56 Maintenant, en dehors des quatre boucles, je vais afficher le graphique de l' histogramme en utilisant plt doth. Je vais configurer ce fichier. Après avoir défini ce fichier, si j' exécute du code dans mon terminal, comme vous pouvez le voir, cela ouvre notre histogramme, notre histogramme de couleurs Il s'agit de notre image originale. C'est une image colorée, et comme vous pouvez le voir sur cet histogramme, nous avons au total trois canaux de couleur, rouge, bleu et vert Et si vous remarquez que chaque canal de couleur, supposons que pour le rouge en position de victoire de l' Essex, il ait atteint le pic d' intensité ; pour bleu à 110 points, il ait touché le pic Et à la position 155 XX, vous pouvez voir le canal de couleur verte Peak. Vous pouvez voir la distribution de chaque canal de couleur dans cette capture. Ce processus est utile pour analyser la distribution des couleurs dans une image et comprendre sa composition chromatique globale. En gros, dans ce didacticiel, nous apprenons comment extraire un histogramme d'image en couleur, et dans notre didacticiel précédent, nous apprenons comment extraire un histogramme d'image en niveaux de gris Merci d'avoir visionné cette vidéo, restez connectés pour notre prochain tutoriel. 19. Thresholding openCV: Bonjour, et bienvenue sur une autre vidéo liée à Opens. Et dans cette vidéo, nous allons parler du seuillage La question qui se pose maintenant est la suivante : qu'est-ce que le seuillage ? Fondamentalement, le seuillage est une binarisation d'une image. En général, nous allons prendre une image et la convertir en une image binaire où zéro représente la couleur noire et 255 représente la couleur blanche. En gros, nous comparons chaque pixel à la valeur seuil. Si la valeur du pixel est inférieure à la valeur seuil, nous la définissons comme zéro pour le noir, et si elle est supérieure à, nous la définissons comme 255 pour le blanc. En un sens, nous pouvons essentiellement créer une image binaire à partir d'une image autonome ordinaire Et dans ce tutoriel, nous parlons essentiellement deux types de seuillage différents, le seuillage simple et le seuillage adapté Commençons par un simple seuillage. Dans un premier temps, je vais taper une commande à jambe unique ici. Je vais taper un seuil simple. Repliage simple. Avant d'appliquer un simple triplage, nous devons convertir cette image, cette image colorée, en image en niveaux de gris Pour cela, ici, je vais déclarer une variable grise, assigner au CV CT coloré. Cette méthode. Ensuite, à l'intérieur du tour et dans un premier temps, nous devons transmettre l'image source qui est une image variable IMG, puis nous devons utiliser le code couleur. Couleur CVT, soulignez deux gris BGR, celui-ci. Ensuite, je vais afficher cette image. Donc, pour ce qui est du type, CV do I am Somethor in the round brass, d' abord, je vais fournir un nom de fenêtre gris, puis nous devons fournir l'image en gris Maintenant, pour appliquer le seuillage simple, nous devons appliquer une fonction Nous devons utiliser une fonction appelée Cv point threshold, et cette fonction renvoie le seuil. Et il renvoie également Trash. De même, nous devons utiliser la méthode, le seuil vt, le seuil et à l'intérieur des robes rondes, d'abord, nous devons transmettre l' image source qui est grise, et ensuite, nous devons passer la vague de seuil, une virgule flottante. Pour l'instant, je vais dépasser les 150 ans. Ensuite, nous devons transmettre la valeur maximale. Si la valeur d'intensité des pixels est supérieure à 150, je souhaite binariser l'image S'il traverse l'étiquette, je veux le définir 255. Je veux dire, entièrement blanc. Ensuite, nous devons passer le type de seuillage pour le type de seuillage, je suis un binaire à points de type C. Celui-ci. Une autre question est de savoir ce qu'il fait. En gros, il va comparer chacune des de pixel avec cette valeur de ceinture S'il est supérieur à 150, il le mettra à 255, ce qui signifie qu'il est blanc S'il est inférieur à 150, il le mettra à zéro, ce qui représente la couleur noire. Essentiellement, il renvoie deux choses TAS , à savoir l'image Hefold ou l'image binarisée Il renvoie également Tfold qui est essentiellement la même valeur que celle que nous avons transmise ici Dans notre cas, 150. Maintenant, affichons cette image, donc tapez, Su tapez point et Mthods the Rundverses dans un premier temps, nous devons fournir le nom de la fenêtre, le type, le seuil simple, puis nous devons transmettre images celle-ci. Maintenant, exécutons le code dans un terminal et C pour que l' terminal et C pour Comme vous pouvez le constater, il s'agit de notre image originale. Il s'agit de l'image en niveaux de gris. Il s'agit de la version griscale de cette image originale et voici l'image de seuil C'est essentiellement ce que nous obtenons, si nous disons la valeur seuil 150. Maintenant, modifions la valeur du seuil. J'ai fait ce terminal et je vais le changer, je vais en faire une valeur seuil de 100. De plus, je ne veux pas montrer l'image d'origine. Je commente cette ligne et je ne veux pas non plus montrer l'image grise. Je commente également cette ligne. Je vais sous-traiter ce fichier. Après avoir défini ce fichier, si j'exécute ce code dans mon terminal, vous pouvez maintenant voir que c'est ce qu'il est écrit. Si nous disons une valeur de thrash 100. Désormais, la valeur de pixel au-dessus de 100 devient 255 et la valeur de pixel inférieure à 100 devient zéro. Au lieu de transmettre une valeur plus élevée, si je passe une valeur inférieure, laissez-moi vous montrer. Si je passe le 220. Ensuite, définissez ce fichier et exécutez ce code dans mon terminal, vous pouvez maintenant voir le résultat différent. Maintenant, vous ne pouvez voir que deux globes oculaires, rien d'autre. C'est ainsi que vous pouvez obtenir un résultat différent si vous payez avec un seuil. Inversons maintenant ce seuil de deux. Pour l'instant, je vais le créer pour le moment, je vais en faire 120 et définir ce fichier, puis je duplique cette section. Ensuite, je vais changer l' inverse du trait de soulignement pair, I NV Nous devons également changer de méthode. Inverse binaire à point CV, N. De plus, je dois appeler cette variable Trash underscope NV et seuil simple Il s'agit du nom de la fenêtre. En gros, cela va inverser l'image. Pixels de l'image, laissez-moi vous montrer. Après avoir défini ce fichier, vous pouvez voir le résultat. Il s'agit du seuil simple d'origine, et il s'agit de l' image du seuil avec mode inverse. Comme vous pouvez le constater, les valeurs des pixels sont inversées. Maintenant, la partie blanche devient noire et la partie noire devient blanche. C'est l'inverse, la version de cette image. Maintenant, au lieu de régler l'intensité des pixels qui est supérieure à 120 à 255, il va la mettre à zéro. Parce qu'ici on inverse l'image. Nous utilisons le thrash binaire inverse. En gros, vous voulez dire quelle valeur est supérieure à 120, elle va la mettre à zéro et quelle valeur est inférieure à 120, elle va la mettre à 55. Il s'agit d'un simple seuil. Passons maintenant au seuil adaptatif. Ici, je vais taper un seul encoman par pile, et je vais taper un seuillage adaptatif Dans un processus de seuil simple, nous devons fournir le volume de seuil manuellement. Mais dans le cadre du seuillage adoptif, nous avons laissé à l'ordinateur le soin de trouver lui-même la valeur de seuil optimale, et en utilisant cette valeur, nous avons binarisé l' image Et pour contacter le seuil d'adoption, ici, je vais déclarer une variable appelée underscoe A égale pour tester le thrash adoptif, égale au point Cv ici, égale au point Cv ici, nous devons utiliser une méthode Celui-ci. Ensuite, à l'intérieur du rond ss , nous devons d'abord transmettre l'image source. Ici, je vais passer le gris, l'image grise. Ensuite, nous devons également indiquer la valeur maximale. Nous n'avons pas besoin de définir la valeur du thrash manuellement. Nous devons dire la valeur maximale et je vais dire 255. Ensuite, nous devons utiliser la méthode adaptative, qui s' appliquera à la corbeille adaptative. Je vais taper v point adaptive trash main C, celui-ci. De plus, nous devons appeler le seuil Ti, qui est un binaire à points Cv, celui-ci, puis nous devons passer la taille du bloc pour la taille du bloc, je vais enfin passer 11, nous devons passer CV et je vais définir Cvu trois Maintenant, qu'est-ce que cela signifie ? La fonction appelée seuil adoptif est une méthode de seuillage, très utile pour les images présentant des conditions d'éclairage variables dans les différentes zones Si je parle de ce paramètre, moyenne adoptive C sous-sco C, ce paramètre définit la méthode utilisée pour calculer le seuil pour chaque pixel Au paramètre suivant, nous définissons le temps de seuillage. Ici vous pouvez la voir, on passe partout. C'est pour la taille des blocs. Je représente la taille du quartier. Ici, 11 représentent 11 x 11 pixels de bloc vers le haut qui seront utilisés. Enfin, nous en passons trois. Je représente le poids. Cela permet d'affiner le seuil. Méthode Ces méthodes aident à gérer des images où l'éclairage peut traverser de manière très significative différentes zones car il s'adapte aux variations locales. Maintenant, allez-y et affichez cette image. Ici, je tape Cb point, je viens de Method. Et dans les rundresses, je vais passer le même nom de variable que le nom de la fenêtre tel qu'il a été adopté et je vais transmettre la variable par une virgule Je voudrais également commenter ces deux lignes, celle-ci et If Math, je vais afficher l'image grise. Je vais régler ça très bien. Maintenant, exécutons le code dans notre terminal et voyons ce qu'il renvoie. C'est ce que rapporte l'adoptive Tash. Cette image. Nous définissons ici la taille du noyau 11 w 11. Et OpenCV calcule un principal sur ces quartiers. Je veux dire pixels de voisinage, et c'est trouver le seuil optimal pour une pièce spécifique. Je sais que techniquement, cela semble fou et qu'il est difficile de comprendre ce qui difficile de comprendre ce qui se passe dans les coulisses. C'est ainsi que nous pouvons appliquer un seuil adaptatif à l'image. Threshold jouera un rôle clé dans nos projets lors de nos prochains projets. C'est pourquoi nous devons comprendre comment fonctionne le seuil. Merci donc d' avoir regardé cette vidéo, Syuned pour notre prochain tutoriel 20. Afficher les coordonnées des points cliqués sur l'image en utilisant Python OpenCV: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre exercice lié à Python open C. Aujourd'hui, dans cet exercice, nous allons afficher le point de coordonnées lorsque je clique sur l'image. Supposons que si j'appuie sur le bouton droit de la souris sur cette image à cette position, comme vous pouvez le voir, cela imprime les coordonnées X XS et YXS Et de même, si je fais l' éloge du clic droit dessus, vous pouvez également le voir imprimer les coordonnées. Voyons comment nous pouvons réaliser ce programme en utilisant PyonOpenC Enfin, nous sommes dans l'éditeur de code de mon studio Visal. OpenCV nous aide à contrôler et à gérer différents types d'événements liés à la souris et nous donne la flexibilité nécessaire pour y opérer Il existe de nombreux types d'événements liés à la souris. Cet événement peut être affiché en exécutant ce code. Comme vous pouvez le voir, utilisez une boucle à une ligne pour la fonction I DIR CV two. Je gagne même P. Il va imprimer tous les événements depuis l'OpenCV, depuis le CVRator ouvert Exécutons le code dans mon terminal et voyons combien d'évitement nous avons Comme vous pouvez le voir, ce code plusieurs événements liés au clavier et à la souris. Flacquer l'ancienne touche, la touche Ctrl, le bouton Flag Lip, le bouton de la souris , le bouton R, la touche Shift, mais nous devons afficher les coordonnées lorsque je clique sur cette image Pour cela, nous avons besoin de lever le bouton vers le bas et d'écrire le bouton vers le bas, le bouton R vers le bas, ceci pour l'événement. Commençons le code. Donc d'abord, je vais tuer ce terminal. Alors je vais commenter cette ligne. Ensuite, ici, je vais lire et créer une image en utilisant la fonction racine de l'image, je lis par messagerie instantanée. Dans un premier temps, je vais déclarer une variable appelée image IMG, image égale à CV two IMTFunction Je suis prêt. Celui-là. Ensuite, vous avez dit « presses rondes ». Dans un premier temps, nous devons fournir le chemin du fichier, la source de l'image. C'est le cours unique, je vais passer le format JPG à deux points. Avec cela, nous devons passer le canal couleur et notre mode de canal couleur est BGR. Je veux en passer un. Si je passe zéro, alors égal pour renvoyer l'image en niveaux de gris. Ensuite, nous devons afficher cette image en utilisant la fonction IMS. Il tape, demi-deux points. Au lieu de cela, appuyez sur Exécuter abord, nous devons fournir un nom de fenêtre qui est image. Ensuite, nous devons fournir la variable, l'image source IMG. Et maintenant, nous devons définir une souris appelée cette fonction. Nous allons passer la fenêtre d'image et utiliser une fonction définie comme paramètre. Voici une souris à deux points Modo Tie CV, appelez ça. Ensuite, à l'intérieur des rondes, nous devons transmettre le nom de l'image, le nom de la fenêtre d'image, non la variable, et le nom de la fenêtre d'image est image. C'est l'image à code unique, de type Imo. Ensuite, nous devons passer une fonction définie par l'utilisateur en tant que paramètre, et le nom de notre fonction est click event. Alors tapez, cliquez, soulignez l'événement clé. Cette fonction va gérer tous les événements liés aux touches de la souris. Il va également renvoyer les coordonnées. Ensuite, je vais appeler le Wet, donc, tapez CV à deux points, touche weit La touche humide est un d zéro. Je ne vais pas vous expliquer pourquoi nous devons utiliser touche Quit, car nous en avons déjà entendu parler dans plusieurs vidéos. De plus, je vais détruire toutes les fenêtres. Alors tapez CV à deux points, détruisez toutes les fenêtres. Ensuite, avant de créer cette fonction, je souhaite déplacer tout le code à l'intérieur la fonction if named equal to equal to mean, qui est notre fonction pilote. Je vais taper i ndsco underscoenme, underscore, égal à égal à l'intérieur des codes doubles undersco underscoe M, undersco underscore M codes doubles , undersco underscoe. Ensuite, dans cette fonction de pilote, je vais passer au code. Nous utilisons if naan égal à égal à la fonction principale car nous allons appeler cette fonction depuis la page existante C'est pourquoi nous devons le créer. Maintenant, je vais créer cette fonction, cliquez sur événement. Tout d'abord, je vais copier le nom de la fonction, cliquer sur l'événement, et là, voici le nom de notre fonction, cliquez sur l'événement. Ensuite, à l'intérieur des presses rondes, cette fonction va prendre plusieurs arguments. Notre premier argument est égal. Notre prochain argument est Xs. Ensuite, je vais passer Y. De plus, il va prendre le drapeau Et le dernier est le pardon. Ensuite, dans cette fonction, pour l'instant, je vais taper pass. Pour l'instant, je pense que je dois imprimer quelque chose dans un terminal. Je vais donc taper print statement, print. Dans le processus, je vais taper, ça marche. Avant d'exécuter ce code, laissez-moi vous expliquer ce que nous avons fait. Comme vous pouvez le voir ici, nous utilisons une fonction d'OpenCV, cv two dot, set mouse C'est une souris qui s'appelle cette fonction. Chaque fois que je clique sur cette fenêtre d'image, elle appellera cette fonction, cliquez sur événement. Et dans notre fonction d'événement de clic, nous imprimons simplement son travail dans notre terminal. Si je définis ce fichier et que j'exécute ce code dans mon terminal, vous pouvez voir l'image. Et chaque fois que je clique sur cette image, telle que vous pouvez la voir s' imprimer, elle fonctionne. En gros, chaque fois que je passe ma souris dessus, cela fonctionne également car dans notre fonction, nous ne précisons pas quel événement particulier nous allons utiliser C'est pourquoi cela fonctionne sur tous les événements lorsque je passe mon carton dessus De plus, si j'appuie sur n'importe quelle touche, je pense que cela fonctionnera toujours. Non, ça ne marchera pas si j'appuie sur la touche car ici, nous n'utilisons que la souris pour appeler cette fonction. Parlons maintenant du paramètre de cette fonction. Comme vous pouvez le constater, nous avons le paramètre f total, X, Y, flax et params En utilisant le paramètre d'événement, nous pouvons définir l'événement de la souris. Il peut s'agir d'un clic de lèvre, sinon d'un clic droit. X et Y, les coordonnées de l'événement d' ouverture de la souris. Puis vient le paramètre du lin. Il n'est pas utilisé, mais il est requis par la signature de rappel Je veux parler de tous les drapeaux pertinents transmis par Open C. Et puis viennent les modèles. Le motif est également un paramètre supplémentaire. Si c'est nécessaire, nous allons utiliser ce paramètre. Donc, d'abord, je vais utiliser la condition IP dans cette fonction. Alors tapez, nous allons vérifier l'événement de clic de souris. Je suis même égal à un événement CV à deux points. Ici, je vais utiliser un événement, et je vais utiliser un événement de «   lit button down », un événement de type. Soulignez L, bouton bas, celui-ci. Ensuite, dans cette condition IP, je vais d'abord afficher les coordonnées, et je vais afficher les coordonnées dans notre terminal. Sous-type Prin inside the rounds, X Je vais laisser un espace, donc je passe tous les codes, je vais transmettre les coordonnées Y. Ensuite, je vais dupliquer cette section. Je souhaite étudier l'état de la propriété intellectuelle. Parce qu'ici, nous devons cacher deux conditions IP. L'un est pour le bouton bas et l' autre pour écrire le bouton bas. Je vais configurer ce fichier. Je vais maintenant exécuter ce code. Exécutez ce code dans mon terminal. Si je clique n'importe où sur cette image, voyons ce qu'elle est écrit dans mon terminal. Comme vous pouvez le voir, il imprime les coordonnées. abord, il imprime la position xx, puis il imprime la position y. Si je fais l'éloge de Red Kick à cette position, imprime également les coordonnées. C'est pour Lip Kick et Red iOS car nous utilisons la condition IP. Nous avons donc presque terminé. Nous devons imprimer ces coordonnées sur l'image. Donc, dans un premier temps, je vais utiliser une police de caractères. Pour cela, nous devons utiliser des polices, sorte de Ti, police, EPI deux Ici, je vais utiliser la police d'OpenCV, CV to do, et ici je vais utiliser la police, soulignement, He semi, celui-ci, celui-ci Je vais maintenant utiliser une fonction inviil d'OpenCV, laquelle vous allez mettre le texte sur l'image Pour cela, je vais taper CV dans ce texte Put. Dans la fonction Put text, je vais d'abord transmettre l'image source, qui est IMG. C alors je vais passer une chaîne. Je vais donc appeler la fonction de chaîne TR. Ensuite, dans les versets ronds, je vais d'abord imprimer X, X. Ensuite, je vais concaténer avec Je vais saisir les codes uniques C. Encore une fois, je vais utiliser à nouveau la congaténation sinusoïdale, je vais imprimer une chaîne pour Y VD afin d'imprimer le Y VD STR, Si le rond est égal à Y après ce flux, nous devons définir la position où nous devons placer le texte. Et pour cela, dans les rondes, je vais passer les excès et les Y x. Somnotype X, Y. Ensuite, nous devons passer la phase de fonte Quelle police je vais utiliser. Je vais utiliser cette forme variable car c'est dans cette variable que nous définissons la police. Enfin, nous devons définir l'échelle de police, qui est une, puis nous devons définir la couleur de la police colorée, et je vais utiliser BGR. J'ai dit « la coureuse » et je vais utiliser du bleu. 255, la première valeur, la deuxième valeur est zéro, la troisième valeur est également zéro. Enfin, nous devons définir l'épaisseur de cette police, qui est de deux. C'est ça. Ensuite, nous devons afficher cette image en utilisant la fonction d'affichage par messagerie instantanée. Je vais donc copier cette ligne, et je vais la coller ensuite. De plus, je vais copier cette section et la coller pour cette condition pour la bonne clé. Je vais configurer ce fichier. Après avoir posé ce terreau, passons le manteau pour voir s'il fonctionne correctement ou non. Donc, ouvrez ce terminal d'entrée de code, si je clique n'importe où, si vite, je vais faire l' éloge de let click UterPrais laisse cliquer, comme vous pouvez le voir, il imprime les coordonnées sur l'image X est X, l'excédent est de 130 et Ys est de 170. Il imprime également la même valeur. Au cours de notre mandat. Maintenant, je vais faire l'éloge de Rattle. Si j'appuie sur R cli comme vous pouvez le voir, cette fois j'imprime également les coordonnées XX et XS C'est ainsi que nous pouvons imprimer les coordonnées XX et X en utilisant OPC J'espère que vous comprenez maintenant comment nous pouvons créer. Merci d'avoir regardé cette vidéo, planifiez le prochain projet. 21. Détection des points blancs et noirs en utilisant OpenCV: Bonjour, et bienvenue dans un autre exercice real tt Open City. Dans cet exercice, nous allons apprendre comment compter ce point et ce point blanc à l'aide de Python Open City. Voyons donc la démonstration. Comme vous pouvez le voir sur mon écran, HeaOpen affiche deux images différentes côte à La première image est sur fond blanc. Et sur cette image, nous avons plusieurs points noirs. Et la deuxième image est sur fond noir. Et aussi, sur cette image, nous avons des points blancs. Mais si vous remarquez, vous pouvez voir que la taille des points est différente. Certaines portes ont une taille de trois pixels carrés et d'autres mesurent près de 20 pixels carrés Nous devons donc écrire un programme en utilisant Open CD, qui va compter tous les points noirs, A qui va compter tous les points blancs. Passons donc au code de Visor Studio et voyons comment le créer Bonjour, et bienvenue dans un autre exercice Python Open Cit. Dans cet exercice, nous allons effectuer détection de points blancs et noirs à l'aide d'Open CP. traitement d'image à l'aide de Python est l'un des sujets les plus en vogue dans le monde d'aujourd'hui, mais le traitement d'image est un peu complexe et les débutants s'ennuient dans leur première approche Nous avons un programme Python de traitement d'image très basique pour compter les points noirs sur surface blanche et les points blancs surface noire en utilisant OpenCVFunction. Dans cet exercice, nous allons utiliser fonctions telles que le seuil de lecture de l'image, les contours fins et la zone de contour. Comme vous pouvez le voir dans mon répertoire de travail actuel, nous avons un point moyen fin pi en Python. De plus, nous avons une image point noir un point GPH. C'est l'image que nous allons utiliser pour trouver des points noirs sur une surface blanche. Comme vous pouvez le voir sur cette image, nous avons plusieurs surfaces noires et blanches Nous devons compter les points noirs avec OpenCV. Passons donc à l'éditeur de code Visual Studio. Nous devons donc d'abord importer la doublure OpenCV. Ici, nous tapons, importons, importons C deux. Ensuite, nous devons définir l'image cinq bains, qui est un point noir un point GBG Je vais déclarer un chemin variable égal à celui de l'intérieur du JBG à double code, noir, point un point Nous devons maintenant convertir cette image en image en niveaux de gris. Pour cela, je vais utiliser image at function. Tout d'abord, je vais déclarer une variable gray, assignée avec, je vais appeler une fonction C iMRDImagerad à deux points Ensuite, dans le UndressSF uniquement pour fournir le chemin du fichier image Dans ce cas, nous devons fournir une valeur tu flat, qui est Z. Cela peut convertir n'importe quelle image en image en noir et blanc Nous devons maintenant convertir cette image griscale en image binaire Pour cela, nous allons utiliser Threshool. Tapez un seuil unique et de commande, puis tapez TH et une autre poussée variable. S est égal à CV à deux points. Ensuite, dans cette fonction, vous devez d'abord transmettre l'image en niveaux de gris, celle-ci Ensuite, nous devons passer à. abord, nous devons passer le thrash B. Ici, je vais passer les 100 Ensuite, nous devons atteindre le niveau maximum de victoire, qui est de 255. Ensuite, nous devons transmettre le type, qui est binaire. Je vais taper deux points thrash Trash binary IN V. Ensuite, je vais utiliser l'opérateur Odd et ici, pour taper CV, deux points soulignent les forts, celui-ci Remarquez ce fichier. Maintenant, laissez-moi vous expliquer la fonction de seuil. La fonction CV à deux seuils fonctionne comme si la valeur du pixel était supérieure à une valeur seuil, on lui en attribuait une, peut-être blanche, sinon , une autre valeur, peut-être noire. En gros, il va convertir cette image en image en noir et blanc. Je veux dire une image en noir et blanc pur. Vous pouvez l'appeler forme binaire d'une image. Le premier argument est la source de l'image, qui doit être une image en niveaux de gris deuxième argument est la valeur de seuil, qui est utilisée pour classer les valeurs des pixels. Si la valeur des pixels de l'image est inférieure à 100, elle sera définie à zéro. Si le pixel de l'image est supérieur à 100, le résultat sera 255. Comme vous le savez, zéro représente la couleur noire et 255 représente le blanc pur. C deux, l'uncode binaire inférieur à la limite IND est un temps seuil. Cela signifie que l'image binaire de sortie aura une couleur inversée et OtsU est utilisé pour déterminer automatiquement le ThessalvDO optimal Je sais que cela semble assez technique. Ne t'inquiète pas pour ça. Fais juste ce que je fais. Ensuite, nous devons trouver les conduits. Maintenant, la question est de savoir quels sont les conduits ? Les condes peuvent être expliqués simplement comme une courbe se joignant au point de conduction et à la limite Gardez la couleur et l'intensité identiques. Les conduits sont un outil utile pour l'analyse des formes détection d'objets, la reconnaissance et le menu Les contours offrent une meilleure précision lors de l'utilisation d'images binaires, et la fonction find conduit prend au total trois arguments. Le premier est l'image source. deuxième est ConturTrival, troisième est l'approximation des contours et fun condus renvoie une Utilisons la fonction. Tout d'abord, je vais déclarer une variable, CNT égale à conduces égale à CV, très bien ConduFine Celui-ci, très beau titre. Ensuite, dans le RoundressF nous devons transmettre l'image source, qui est du thrash, celle-ci Je copie cette variable et je la colle ici. Ensuite, nous devons passer le Retrib Moon. Pour cela, je vais utiliser C two point ETR ist. Liste Retv Et la troisième valeur est la méthode d' approximation. Pour cela, elle passe une chaîne de deux points environ. Celui-ci. La méthode d'échantillonnage par chaîne comprend des segments horizontaux, verticaux et diagonaux et ne laisse que les extrémités. Cela permet de stocker moins de points en mémoire, ce qui est utile pour simplifier la représentation des conduits Ensuite, à l'intérieur du carré contre m pour passer moins deux. Ceci est utilisé pour gérer les différences entre les valeurs écrites de la méthode de conduction fine de Cout. Il est utilisé pour contrôler les différences entre les différentes versions d' Open C. Dans certaines versions, il renvoie un total de trois valeurs, hiérarchies de contours et une image, et dans d'autres, il renvoie un total de deux valeurs, uniquement du contut et des hiérarchies, et nous avons particulièrement besoin de contours et de hiérarchies nous avons particulièrement besoin de contours et Nous n'avons pas besoin d'images. C'est pourquoi Hero utilise technique de découpage moins deux, car nous n'avons besoin de sélectionner que ces deux valeurs, la conduction et les hiérarchies Cela va donc le trouver sur le concours et enregistrer ce contour dans la valeur CNTs Maintenant, nous devons filtrer cette confusion. Nous devons filtrer ces condues en fonction de leur zone. Nous devons éviter de confondre ceux dont la zone est comprise entre 3 et 20. Je veux dire trois et 20 pixels carrés. Après avoir filtré cette conduite, nous devons stocker cette contule dans une variable Allons donc chercher le filtre. Nous devons donc ici filtrer le contube par sa surface. Donc, d'abord, je vais en définir un. Il s'agit de notre premier point d'alimentation, qui est de trois pixels carrés Dupliquons cette ligne, et voici notre deuxième point sensible, deux, qui fait 20 pixels carrés Je vais maintenant créer une liste vide, dont X CNT X contubes sont égaux à, c'est une liste vide. Et maintenant, nous allons faire la boucle à travers tous les contours. Pour cela, je vais utiliser 44 CNT, ConTun conduce, car la variable conducce in contours est avec tous les contes, puis à l' automne, il E est un, I S un signifie condition un, trois pixels carrés, moins que CV deux. Il doit utiliser la méthode de la zone de contour. Ensuite, à l'intérieur des rondes, nous devons passer les cônes CNT. Je veux dire que si chacun des contours correspond à cette condition, N contours et qu' il est inférieur à S deux, condition deux, avec cette condition de pointe à l'intérieur, je veux ajouter tous les contours correspondant à cette condition dans cette liste En gros, je veux ajouter tous les mardi de cette liste, qui correspondent à cette condition Fonction d'ajout de conduits Hemo de type N X . À l'intérieur de la presse, je vais passer les conduits concernés, CNP. C'est ça. Maintenant, expliquons ce formulaire. d'abord, je fais le suivi de tous ces contours que nous stockons dans cette liste, tu list. Ensuite, chacun des contours définit cette condition et la condition est que le contour se situe entre trois pixels carrés et 20 pixels carrés, ils ajoutent à ce contour au moins X contours Et c'est elle qui a créé le Dist Conduce. Nous devons maintenant imprimer la longueur du conduit pour en imprimer combien dans notre image. Pour cela, en dehors de la déclaration d'impression à quatre loamtypes, imprimez à l'intérieur des cuivres ronds, à l'intérieur des codes doubles, le numéro total de l' hémotype de ce point Et ici, je vais utiliser la méthode Estring. Chaîne E, puis à l'intérieur des malédictions, je veux imprimer la longueur de cette liste Je vais donc utiliser la fonction de longueur AN et dans la cavité ronde, je vais transmettre exent la liste . Je vais configurer ce fichier. Et avant d'exécuter ce code, vérifions-le si j'ai fait une erreur ou non. Je pense que c'est bon. Oups, il y a une erreur. Oui, celui-ci. Nous devons déplacer cette sélection en dehors des accolades. J'ai donc découpé cette section et l'ai mise à l'extérieur des bretelles rondes Et je vais configurer ce fichier. Et après avoir défini ce fichier, exécutons le code et voyons s'il est facile de fonctionner correctement ou non. Donc, pour exécuter ce code, comme vous pouvez le voir, le nombre total de points noirs est de 23. Cela a donc parfaitement fonctionné. Nous en avons donc un total de 23 noirs sur cette surface blanche. J'espère donc que vous savez maintenant comment compter les points noirs sur surface blanche avec Python Open C. Avec ce programme, vous pouvez compter les points noirs. Vous pouvez également compter les points blancs. Laisse-moi te montrer. Comme vous pouvez le voir, nous avons une autre image dans mon répertoire de travail actuel. Cette image est livrée avec un fond noir, et dans ce fond noir, nous avons des points blancs, mais nous avons des centaines de points blancs, et la taille des points blancs est différente. Certains points blancs font près de trois pixels carrés et certains points blancs font près de 20 pixels carrés, nous devons tous les compter. Conduisons le module studio de l'utilisateur. Comme vous pouvez le voir dans mon répertoire de travail actuel, nous avons cette image, un point blanc pincé. Tout d'abord, je vais copier le chemin du fichier, sinon le fichier. Ensuite, je vais remplacer le chemin du fichier, donc je vais dupliquer cette ligne commenter la ligne précédente et remplacer ce point par un point blanc png. Ensuite, je vais modifier le nombre total de points blancs. Oui, aussi, je vais exécuter ce même programme, mais juste pour changer une chose. Cette fois, je n'ai pas besoin de cette inversion. J'ai juste besoin de Thresh Bind. Je vais donc dupliquer cette ligne, commenter précédente et supprimer INV. Nous avons juste besoin de thresh bind, et je vais définir ce fichier Configurez ce fichier. Si j'exécute ce code dans mon terminal, voyons ce qu'il a écrit. Exécutez ce code, car vous pouvez voir le nombre total de points blancs, 583 C'est ainsi que nous pouvons également compter le point blanc. Il faut juste changer le rythme du thrash. Si vous voulez compter le point noir, vous devez inverser le lien du thrash, et si ce n'est pas le cas, vous n'avez pas besoin de l'inverser Voilà pour ce tutoriel. Merci d'avoir regardé cette vidéo Restez connectés pour le prochain tutoriel. 22. Dessiner une forme rectangulaire et extraire des objets: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre projet Python open CP, et dans ce projet, nous allons dessiner une forme de rectangle et extraire un objet en utilisant Python open Civing Je vais vous montrer la démonstration. Comme vous pouvez le voir, ici j' ouvre une fenêtre d'image de chat. Je vais maintenant sélectionner une partie de cette image. Je recommande le fait de cliquer sur les lèvres et de les relâcher à cette position. Comme vous pouvez le voir, cela crée ici une forme de rectangle. Et si votre sélection n' est pas bonne, vous pouvez également restaurer la fenêtre. Vous pouvez également réinitialiser la fenêtre, vous devez appuyer sur R. Encore une fois, vous pouvez effectuer cette sélection. Et si vous pensez que votre sélection est bonne, vous devez appuyer sur le mot clé C de votre clavier pour recadrer cette section et l'afficher dans une nouvelle fenêtre. Comme vous pouvez le constater, Harry peint une image recadrée et l' affiche dans cette fenêtre. Si vous voulez quinter cette fenêtre, il suffit d'appuyer sur Q pour citer le programme Et pour exécuter le programme, nous allons utiliser un argument linéaire commun. C'est ce que nous allons créer dans ce projet. Commençons donc par la pratique. Ici, nous allons écrire un code Python qui permet à l'utilisateur de sélectionner et recadrer une partie d'une image en dessinant un rectangle à l'aide de la souris. Dans un premier temps, nous devons importer des modules. Tout d'abord, je vais importer OpenCV, type de son CV deux Ensuite, je vais importer un autre module qui est arc perse. Je vais taper Import Rc parts. Alors, à quoi sert le module Rc Peruse ? module Rc Peruse est utilisé pour gérer les arguments de la ligne de commande Ne vous inquiétez pas, nous le saurons plus tard. Initialisons maintenant la liste des points de référence. Ici, je vais créer une liste vide, et pour cela, je vais prendre le nom de cette variable RF underscore reference point Le point de référence égal à celui-ci est une liste vide. Ensuite, je vais déclarer une autre variable crop, par défaut, Cp égale à Fs. Cette condition est forbs. La variable du point de référence est une liste vide. Qui va stocker le point de départ et le point final du rectangle. Et le recadrage est la valeur booléenne, qui est utilisée pour savoir si le recadrage est en cours Ensuite, nous allons utiliser la fonction d'événement de la souris, qui va suivre les clics de souris. Pour cela, nous allons utiliser essentiellement deux événements de souris, savoir lapbottom down et lap bottom up, et nous allons utiliser cet événement pour déplacer la souris dans une fonction. Hem drew déclare la fonction F et le nom de notre fonction est sélection de forme. Sélection de la forme sous le scope. Sélection de formes à l'intérieur des robes rondes. Tout d'abord, il va prendre l'événement comme paramètre. Ici, nous devons réussir l'événement. Événement, alors nous devons passer les Xxs et les YxS. Ensuite, je vais passer les drapeaux. Enfin, je vais suivre le schéma. Dans cette fonction, nous devons utiliser ces deux variables. Ici, je vais déclarer ces deux variables en tant que variable globale, une sorte de point de référence global et la variable suivante est crop. Maintenant, si vous avez cliqué sur le bouton tardif de la souris, enregistrez les coordonnées X et Y de départ et indiquez que le recadrage est en cours Je tiens à dire que si je clique sur le bouton gauche de la fenêtre, le point de départ du rectangle sera saisi. Nous devons donc utiliser un événement de condition IP égal à égal. Ici, je vais utiliser l'événement du bouton du lèvre de la souris. Je vais taper un soulignement d'événement à deux points en C, et je vais utiliser le bouton d' événement vers le bas du bouton lèvre vers le bas, celui-ci Ensuite, dans cette condition IP, je vais dire que le point de référence de l'onde égal à ici, je vais le dire dans les carrés, dans les ronds, je vais définir la première La première valeur est X, Y. Ici, nous utilisons si l'événement est égal à égal pour laisser le bouton enfoncé, alors il va saisir les Xx et YX, les coordonner et les enregistrer dans cette liste vide Maintenant, nous devons également saisir le point final pour cette condition elliptique de type ourlet Sinon, si l'événement est égal à go. Cette fois, je vais utiliser le CV à deux points, pair, soulignement, et cette fois je vais utiliser le bouton à lèvres, le bouton P. Je veux dire que lorsque nous relâchons le bouton rodé, alors que je veux saisir l'extrémité du rectangle pour saisir les coordonnées, nous devons utiliser APEnFunction Nous devons ajouter un autre point xs et yxS à cette liste vide. Pour cela, je vais taper le point de référence point apen. Quand tu as dit les rondes, je vais passer les coordonnées, les coordonnées de X YX Nous pouvons maintenant dessiner un rectangle car nous avons maintenant le point de départ et les coordonnées N. C'est la fonction et en dehors de la condition, je vais dessiner le rectangle. Tapez donc un rectangle à deux points C. Ensuite, à l'intérieur des arrondis, dans notre premier paramètre, nous devons transmettre l'image Dans le deuxième paramètre, nous devons passer la première coordonnée. Coordonnée Xxs et coordonnée excédentaire Y ensemble. Pour sélectionner la première coordonnée, je vais lier le point de référence. À l'intérieur de la résine carrée, je vais dormir dès la première vue Je vais donc passer à zéro. Et puis à nouveau au point de contact, je vais taper le point de référence À l'intérieur de la résine carrée, je vais en passer une. Il va sélectionner la deuxième vue. Où vous stockez déjà, les coordonnées Ss et Xs. Après cela, nous devons sélectionner la couleur, la couleur du rectangle. À l'intérieur des robes rondes, nous devons fournir de la couleur au format GR. Pour le bleu, je vais passer zéro. Pour le vert, je vais passer le 255. Et pour le rouge, encore une fois, je vais passer zéro. En gros, je veux la couleur verte. Ensuite, nous devons passer l'épaisseur de la bordure du rectangle. Je vais en passer deux, puis je vais montrer le rectangle sur cette image. Pour cela, je vais utiliser la méthode IMS, parfois CV IMSO à deux points puis à l'intérieur des presses rondes, je passe le double code, je dois passer le nom de la fenêtre qui Ensuite, nous devons transmettre la variable image. Image. Nous écrivons une fonction d'événement de la souris qui peut saisir le point de départ et le point final du rectangle et également dessiner un rectangle sur une image. Et maintenant, nous devons construire l'analyseur d'arguments et analyser l' C'est la fonction. Dans un premier temps, je vais déclarer une variable appelée AP. AP égal à heard Je vais appeler ce module arc parse type R parse À partir de là, je vais exécuter une fonction appelée analyseur d'arguments. Celui-ci. À la ligne suivante, je vais analyser l'argument. Pour cela, je vais taper AP point ici. Je vais utiliser une autre fonction call add argument. Ajoutez un argument de soulignement. Ajoutez un argument dans les ronders, ici, dans un premier temps, nous devons passer un écran Pourquoi travailler en tant que nom, sinon, lin. Dans le double cours, je vais passer I. Ensuite, en dehors de la citation, nous devons transmettre le même argument. À l'intérieur du double parcours, je vais transmettre l'image. Com, cet argument est très important, je vais donc le rendre obligatoire. Obligatoire, égal à vrai. Et pour comprendre la ligne, je vais également taper et comprendre la ligne dans quel but je tape cette ligne. Je vais ajouter un enfer. C'est pareil à l'intérieur du double parcours, je vais taper. Il s'agit du chemin d'accès à l'image Tapez le chemin d'accès à l'image. Ne vous inquiétez pas, je vais vous l' expliquer étape par étape. Ensuite, nous devons analyser l'argument. Pour cela, je vais taper une autre variable args. Args égaux à, je vais appeler une fonction appelée words. Mots à l'intérieur de la robe ronde, je vais passer à apt parse arc Je vais appeler une fonction parse arc. Maintenant, laissez-moi vous expliquer ce que c'est ? Pourquoi j'utilise ces fonctions. En gros, il s'agit de construire un analyseur d'arguments en utilisant la bibliothèque arc peruse Dans un premier temps, nous créons ici un objet analyseur d'arguments. L'objet d'initialisation et d'analyseur d' arguments, qui gérera le transfert des arguments de ligne de commande au script Ensuite, nous ajoutons un argument image. Moi et mon image, c'est l' option courte et longue pour l'argumentation. L'utilisateur peut spécifier l'un ou l'autre lors de l'exécution du script, puis nous transmettons required true. Cela signifie que l' argument est obligatoire. Si l'utilisateur ne fournit pas le chemin de l'image, le script affichera une erreur. Ensuite, nous passons L , qui fournit une description d'un argument, et à la ligne suivante, nous analysons l'argument Tout d'abord, nous parlons d'apt pass Rg. Cette méthode analyse l'argument de la ligne commune et renvoie un objet Ensuite, nous utilisons une fonction appelée verse. La fonction verse convertit argument d'analyse en dictionnaire Vous pouvez facilement accéder à la valeur par le nom de son argument. En gros, lorsque nous exécutons ce script depuis notre terminal, nous pouvons directement fournir le chemin d'une image. Maintenant, nous devons charger l'image et la cloner. Nous devons également configurer la fonction Globe de la souris. Laissez-moi vous montrer comment charger l'image, je vais créer une image à nom variable. Image égale à. Ici, je vais lire l'image en utilisant la fonction de lecture d'image. Donc tapez v image lue à deux points, je suis lu. Ensuite, à l'intérieur des presses rondes, nous devons fournir ici le chemin du fichier image pour lire l'image. Mais comme je vous l'ai dit, nous allons transmettre le chemin du fichier lorsque nous exécuterons ce script en argument, et nous l'avons déjà fait en utilisant la méthode arc purse Donc, à partir de la méthode de la bourse à arc, je vais transmettre cette variable aux RC et à l'intérieur de l'évidement carré, nous devons transmettre Ensuite, je vais cloner cette image, donc tapez une autre variable clone égale à la fonction de copie par points de l'image. Ensuite, je vais attribuer un nom de fenêtre à cette image. Sono tapez CV pour nommer la fenêtre, la fenêtre de nom, la fenêtre. À l'intérieur du rond, je vais passer l'image du même nom Et maintenant je vais définir la fonction de rappel de la souris. Rappel de la souris à deux points C V Dans le processus d'exécution, nous devons d'abord passer la fenêtre dans laquelle fenêtre, je veux définir le rappel de la souris qui est une image Ensuite, nous devons appeler un événement dans lequel nous voulons appeler et je souhaite appeler cet événement la sélection de la forme de cet événement. Copiez le nom de l'événement et collez-le ici. Vérifions-le maintenant et vérifions-le s'il fonctionne correctement ou non. Ici, je vais taper C deux, point, assez clé. Au cours du tour, je vais passer Z et je vais également détruire toutes les fenêtres. Je vais taper C à deux points, détruire toutes les fenêtres. Met le code dans mon terminal. Comme vous pouvez le constater, je n'ai pas mal orthographié. C'est E, pas A. Je vais configurer ce fichier. Si j'exécute ce code dans mon terminal, comme vous pouvez le voir, il renverra une erreur car Harry ne transmet pas l'argument. Mais si je passe l'argument, je veux dire l'argument de la ligne de commande. Si je passe l'argument de la ligne de commande, je vais taper le script, certains pour exécuter le script, d' autres tapez Python. Espace, le nom du fichier M point Pi. Ensuite, je vais taper un identifiant Ensuite, je vais passer le FlePat Comme vous pouvez le voir, le chemin de notre fichier est le format JPG à deux points. Ici, je vais taper cat two dot JPG. Ensuite, je vais appuyer sur Entrée. Après avoir cliqué sur Entrée, je pense qu'il y a une erreur. Il y a toujours une erreur. Mais ça marche. Comme vous pouvez le voir, je peux dessiner les rectangles. Comme vous pouvez le voir, c'est écrit avec une erreur d'index, moins d'index hors de la frange, ligne numéro 18 Tout d'abord, pour résoudre le problème. Je vais supprimer ce terminal puis passer à la ligne numéro 18. Oui, je pense avoir identifié le problème. Le principal problème est que nous devons déplacer ces deux lignes à l'intérieur de l'état des lèvres, non en dehors de l'état des lèvres. Je vais donc le déplacer dans l' état des lèvres et redéfinir ce fichier. Si je trouve un autre code dans mon terminal, cela va générer une erreur Mais si je lie Python, si je passe l'argument de la ligne de commande, point principal pi I, puis je passe le nom de l'image gat two point JPG, j'appuie sur Entrée. Comme vous pouvez le constater cette fois, cela fonctionne parfaitement et ne génère aucune erreur Comme vous pouvez le voir, nous pouvons toujours dessiner un rectangle à l'aide de notre curseur. Les événements de notre souris fonctionnent parfaitement et ne génèrent aucune erreur dans notre terminal. Comme vous pouvez le constater, nous pouvons dessiner plusieurs rectangles. Cliquez ensuite sur la souris, je suppose que c'est le point de départ et lorsque je relâche la souris, et lorsque je relâche la souris, principalement le clic gauche, le point de lancement est considéré comme le point de fin du rectangle. Nous avons fait 80 % de notre travail. Nous devons maintenant recadrer la zone de sélection de cette image. Faisons-le. Je vais également lire le terminal, je vais commenter les deux lignes, sinon nous pouvons également le supprimer. Maintenant, je vais lancer une boucle qui va afficher l'image à l'infini jusqu'à ce que nous fassions l'éloge de Q. Ici, je vais taper le fichier. Deux. Ensuite, à l'intérieur de la valeur, je vais d'abord afficher l'image et attendre que l'on appuie sur une touche Pour cela, je suis de type V deux, est-ce que je suis tellement méthode, je le suis. Ensuite, à l'intérieur des robes rondes, je vais passer l'image du nom de la fenêtre. Je vais également transmettre l'image source qui est stockée dans une image variable. Ensuite, je vais assigner une variable appelée key. La clé est égale à la clé humide à deux points du CV. À l'intérieur des presses rondes, je vais en passer une. Maintenant, le quota est YI pass one. Il va attendre les éloges pendant une milliseconde. Si une clé est louée, elle capture le code de la clé Je vais ensuite passer une bouchée, un code bit à bit, zéro X si H. Cette opération au niveau du bit garantit que seuls les huit derniers bits sont Il est préférable de garantir la compatibilité multiplateforme pour la capture des codes clés Maintenant, après avoir créé le rectangle, si j'appuie sur le mot-clé, je veux réinitialiser la fenêtre Pour cela, nous avons besoin de voir une condition. Nous devons définir la condition IP. Si vous tapez, comme je vous l' ai dit , le code clé sera capturé. Touche égale à elle pour exécuter une fonction appelée ORD, ou dans les tours des codes Dugal, touche R, puis dans la condition IP, je veux cloner l'image Je vais taper une image égale à clone. Copie à points. Ensuite, si je passe C, je veux rompre la boucle. condition de l'hémotype, LC K égale à ORD, est au rond res est entre guillemets, C, puis rompez la C, puis rompez Pause. Maintenant, la question est : qu'est-ce que la fonction RD ? fonction ORD convertit le caractère R, sinon le caractère C en AI V I permet la comparaison avec le code clé, que vous capturez à partir de la fonction Wek Maintenant, en dehors de la boucle Y, nous devons recadrer l'image. Pour cela, encore une fois, je vais utiliser I condition. Donc root, ici je veux appeler la fonction len AN dans les versets ronds, je vais utiliser le point de référence appelé. Je copie ce point de référence et je le colle dans la fonction len. Si la longueur de ce point de référence est égale à deux, insérez la condition. Recadrez l'image. Tapez donc variable, recadrez l'image sous scope recadrage de l'image est égal à deux, et ici je vais utiliser l'image du clone. Je vais copier ce clone variable. Ensuite, à l'intérieur du carré, il est indiqué que nous devons définir la position du recadrage. Mais laissez-moi vous expliquer ce qu' est un point de référence égal à deux. Pourquoi j'utilise cette condition. Vers le haut, l'utilisateur sélectionne la zone et crée le rectangle, puis appuie sur C pour lancer la boucle. Le code utilisé pour vérifier le point de référence contient deux valeurs ou non, et les deux valeurs représentent le point de départ et le point final du rectangle. Ensuite, à partir de l'image du clone, nous devons définir la zone de recadrage pour recadrer l'image, nous allons utiliser la technique de découpage. Ici, tapez Imo, le point de référence R le point de soulignement se trouve sur les carrés, je vais passer zéro Encore une fois, je vais utiliser des résines carrées, ici je vais en passer une Ensuite, je vais utiliser le colon. Ne vous inquiétez pas, je vais vous expliquer les points. Encore une fois, je vais taper le point de référence. Est-ce que les adresses carrées, cette fois, je vais en passer une et une. Pour ce qui est de la valeur suivante, je vais passer pour l'herbe. Point de référence, si le carré résiste, je vais passer à zéro De plus, je vais passer zéro. Deux points, le point de référence à l'intérieur du carré s est Helm pour passer un, puis à l'intérieur des carrés, je vais passer zéro. Permettez-moi maintenant d'étendre les coordonnées de cette technique de découpage. Cette sélection concerne la sélection de la hauteur. Il va sélectionner la zone dans la direction YxS. C'est la ligne de travail. Il va sélectionner entre le point YXS et le point YXS final et la sélection suivante sera effectuée par colonne Il va sélectionner la largeur. abord, il va sélectionner le point xx de départ , puis vous allez sélectionner le point XS final. Ensuite, je vais afficher cette image recadrée dans une nouvelle fenêtre en utilisant ImShoFunction Ici, je vais d'abord taper cv two point Imo dans les presses de course pour passer le nom de la fenêtre qui est Crop Image. Recadrez l'image de soulignement, virgule, puis je vais passer l'image de recadrage variable, la zone exacte que je veux afficher, et je vais également exécuter ct C two wet key Heunpass Si vous le faites dans les conditions IP, je vais détruire toutes les fenêtres Pour cela, je vais taper CV à point, détruire tous les Windows. C'est ça. Je vais configurer ce fichier. Maintenant, configurons le fichier et si j'exécute ce code directement dans mon terminal, comme vous le savez, il lancera une flèche. Je vais exécuter ce code depuis la ligne de commande. Je vais d'abord taper Python space, fine name main point pi point pi space I space, puis nous devons fournir le chemin du fichier, qui est cat two point JPG. Si j'appuie sur Entrée, comme vous pouvez le voir, l'image s'affiche. Maintenant, je vais sélectionner une zone de cette image. Je vais sélectionner ceci est notre point de départ et ceci est notre point final. Je sélectionne cette zone. Je pense que je n'aime pas cette sélection. Je souhaite supprimer cette sélection. Pour cela, comme vous le savez, nous utilisons déjà un Kort, qui est R. Si j' appuie sur RKod, la sélection sera supprimée Si je sélectionne l' image plusieurs fois , y compris si je clique sur R, cette sélection sera supprimée. Mais après avoir sélectionné la zone, si je fais l'éloge de C, alors comme vous pouvez le voir, il recadre cette section et l' affiche dans une nouvelle fenêtre. C'est ainsi que cela a fonctionné. J' espère que vous comprenez maintenant comment nous pouvons créer celui-ci. Merci d'avoir regardé cette vidéo, restez connectés pour le prochain tutoriel. 23. Détection et extraction de texte en utilisant OpenCV et OCR: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre projet en lien avec Python open CV. Et dans ce projet, nous allons effectuer la détection et l'extraction de prises à l'aide de Python open CV. Car nous allons faire appel à l'ORC. Je veux dire Tsat ORC. Comme vous pouvez le voir dans notre répertoire de travail actuel, il existe une image nommée simple point JPG. Si j'ouvre cette image, comme vous pouvez le voir sur cette image, nous avons du texte. Nous avons une sentence. Il s'agit d'un texte simple. Vous avez également une autre phrase. Le texte est pour une autre raison. Et maintenant, nous devons extraire le texte de cette image et l' enregistrer dans un fichier texte pour extraire le texte, nous allons prendre l' aide de Tsat Oc Voyons maintenant ce qu'est Tsat Os et comment nous pouvons le télécharger dans notre système local Avant de commencer notre prochain projet, nous devons télécharger Tsat OC et l' installer sur notre machine locale Ouvrez Google et recherchez Desert OC. Ensuite, il fournira un lien et vous devrez cliquer sur le premier lien TesArc OpenSurceoc Mais avant d'ouvrir ce lien, parlons de Tsat OC Test est un système de reconnaissance optique de caractères pour différents systèmes d'exploitation. Il s'agit d'un logiciel libre publié sous licence Apache. Il s'agit essentiellement d'un outil de reconnaissance optique de caractères. En l'utilisant, nous pouvons extraire le texte d'une image. Avant de démarrer le projet, nous devons l'installer sur notre machine locale. Je vais cliquer sur le premier lien. Il sera redirigé vers une page Web Github. TaseRecoc est un outil linéaire courant. Nous pouvons le parcourir dans notre palette commune et en l'utilisant, nous pouvons extraire le texte d'une image. Vous devez maintenant accéder à la section d'installation, faire défiler un peu vers le bas, et vous pouvez voir ici cette section, Installation de Tresorat Ensuite, vous devez installer le paquet binaire TrasaTypBuild . Il suffit de cliquer sur ce lien. Il sera redirigé vers cette page. Sur cette page, vous pouvez trouver les différentes versions de ce traseract Vous pouvez également trouver différents systèmes d'exploitation. Je suis un utilisateur de Windows, donc je cherche Windows. Si vous êtes Mcuser, utilisez ce lien. Je suis donc un utilisateur de Windows. C'est pourquoi je passe à cette section. Ensuite, vous devez cliquer sur ce lien, Taser sur le lien UB Minh Si vous cliquez sur ce lien , il fournira 32 bits. Comme il fournit 64 battements. Je clique sur ce lien et il redirige vers cette page. J'utilise un système d'exploitation 64 bits, je vais donc cliquer sur ce lien Tsat ORC, W Je veux cliquer sur ce lien pour démarrer mon téléchargement. Maintenant, une fois le téléchargement terminé, vous devez ouvrir le dossier et l'installer comme tout autre logiciel. Ensuite, vous pouvez l'ouvrir directement. Sinon, vous pouvez l' ouvrir en tant qu'administrateur. Ensuite, vous devez sélectionner la langue, puis cliquer sur Suivant et suivre ce processus simple. Ensuite, mixez ensuite. Je suis d'accord Je veux l' installer pour tous ceux qui utilisent l'ordinateur, alors je clique sur Suivant puis sur Mix. Dans cette section, vous pouvez également sélectionner le dossier de destination et je vais le laisser tel quel. Ensuite, je clique sur Installer et je lance le processus d'installation, et notre installation est terminée. Je clique à nouveau sur Suivant, puis sur Terminer. Ensuite, nous devons trouver le dossier d'installation. Je clique, donc je vais cliquer sur Crve, puis je vais accéder aux fichiers du programme Vous pouvez voir que nous avons trouvé le dossier TsarCorc. Si vous ouvrez ce dossier, vous trouverez ici tous les fichiers nécessaires à Trasact Revenons ensuite au fichier du programme et dans un premier temps, je vais changer le nom de ce dossier. Je veux juste l'appeler Tsat. Je vais supprimer Dash et ORC. J'essaie de l'appeler Tsat. Puis j'ai prononcé ce nom. Nous devons maintenant ouvrir ce dossier ag et je vais copier l'emplacement du fichier. Je clique sur ce chemin de fichier et je copie simplement ce chemin de fichier. Vous devez ensuite ajouter cet emplacement de fichier à votre chemin. Pour cela, recherchez PAT et vous devez ouvrir ces variables d' environnement. Ensuite, cliquez simplement sur les variables d' environnement et vous devez sélectionner la section PT. Ensuite, il suffit de le faire et d'ajouter un nouveau chemin. Vous devez maintenant coller le chemin du fichier Tsat. Définissez celui-ci, puis vous devez ouvrir votre Windows Power Shell, et vous devez attacher Tsat LA SAGESSE RÉAGIT. Tapez un trait d'union en forme de tiret. Si j'appuie sur Entrée, voyons ce qu'il renvoie. Comme vous pouvez le constater, cela fonctionne. À partir de cette ligne de commande, vous pouvez directement utiliser Desarat et extraire le texte d'une image Mais nous allons utiliser le langage de programmation Python et créer un programme sophistiqué. Dans cette section, nous apprenons comment installer Disac et comment le définir comme variable d' environnement Nous allons utiliser Dsarec avec Python. Nous devons également installer un module, donc attachez P, installez space Pi desert, PI TeS E RA CT. Ce n'est pas Sat, c'est Tsat. Je vais supprimer R et le remplacer par T. Ensuite, installez simplement ce module dans votre système local. C'est nécessaire à notre projet. J'appuie sur Enter. Après avoir appuyé sur Entrée, comme vous pouvez le voir, il télécharge ce module et l'installe dans notre système local. Donc, après avoir installé Tsaicos et l'avoir défini comme variable d' environnement. Avec cela, nous avons déjà installé un module, Pitste. À l'aide du module Pitsact, nous pouvons exécuter des fonctions Tsaric dans notre fichier Python Donc, dans un premier temps, importons les modules. Dans un premier temps, nous devons importer le module OpenCV, Stipe, importer Ensuite, je vais importer le module Pisact, Styimport Pi Tsat Ensuite, nous devons mentionner l'emplacement de Tsaric dans notre système local et nous installons Tsaric dans notre Donc, pour passer le nom de ce Poa, qui est Tsat. Tapez ici la commande depuis le mode Pisaic. 40, point PisacPitsac Encore une fois, je vais taper Pi tasact Cette fois, je vais exécuter une commande Tsact CMD. Tasert souligne ici le CMD, nous devons mentionner l'emplacement Dans le code unique, je vais taper le nom du dossier, qui est uniquement Taserc et non tasaic sur C. Dans un petit cas, je vais taper taser Comme vous le savez, TSARit est un programme courant. C'est pourquoi nous devons utiliser la commande Tsat. Ensuite, nous devons lire l'image. Dans quelle image, je veux extraire le texte. Tout d'abord, je vais déclarer une variable IMG et G égale à la méthode IMRT à deux points en C, ImRad Ensuite, à l'intérieur des rondresses, nous devons indiquer l'emplacement du fichier et notre nom de fichier est un simple point JPG Après avoir lu l'image, vous pouvez la convertir en image en niveaux de gris De plus, si vous ne souhaitez pas convertir cette image en image en nuances de gris, oui, vous Mais je voudrais convertir cette image en image en écailles de gris. Je vais déclarer une autre variable. Gris, gris, égal à et à partir du CV deux, je veux d'abord exécuter une méthode CVDLor CVT color à l'intérieur de la rondeur, nous devons d'abord passer la variable dans laquelle stockons l' image, qui est IMG, puis nous devons passer le CV à deux points de couleur Bsa au gris, le soulignement coloré, le BGR au gris soulignement coloré Maintenant, affichons l' image dans une fenêtre. Pour cela, je vais lier CV à deux points, je suis tellement méthode. Puis les rondes. Dans un premier temps, nous devons passer un nom de fenêtre qui est simplement D, puis nous devons transmettre l' image source, qui est grise. Ensuite, je veux exécuter la méthode Wet Key, CV two wet key, si le rond en laiton zéro Exécutons donc le code et voyons s' il convertit ou non cette échelle de gris de l'image. Donc, pour exécuter ce code, vous créez un terminal, comme vous pouvez le voir, et il convertit l'image colorée en image en niveaux de gris Nous devons maintenant extraire le texte de l'image. Pour cela, nous devons exécuter une méthode. Nous devons exécuter une méthode à partir du module Pi Resurrect. Donc, d'abord, je vais créer un texte variable, égal à, je vais appeler ce module Pi resurrect Pi resurrect from Pi resurrect, je vais exécuter une fonction qui est une image à Tapez donc une image. Souligner pour souligner un flux. Celui-ci, le dernier. Ensuite, à l'intérieur des presses rondes, nous devons transmettre le chemin du fichier, la source du fichier, qui est une variable grise. Maintenant, je vais commenter les deux lignes, je n'ai pas besoin de ces lignes et je veux épingler le texte dans mon terminal. Certains types Imprimer une déclaration, imprimer, ce sont les robes rondes, je veux passer la variable de texte. Méthode image vers chaîne pour extraire le texte de cette image et définir ce texte dans cette variable. Définissons donc le fichier et exécutons ce code dans mon terminal voir s'il fonctionne correctement ou non. Après avoir exécuté ce code dans mon terminal, comme vous pouvez le voir, le texte est imprimé avec succès. Il s'agit d'un texte simple. Le texte est pour une autre raison. Si j'ouvre ce fichier image, vous pouvez voir le texte à la fois. J'imprime tel quel. Il peut identifier les majuscules, il peut également identifier les minuscules. Nous devons maintenant définir ce texte dans un fichier de document. Pour cela, je vais ouvrir un dossier. Je vais d'abord déclarer une variable. Fichier égal à ouvrir à l'intérieur des rondelles. abord, nous devons déclarer un bon nom, qui est recognize point PHD, et je veux ouvrir ce fichier, en mode W plus, donc tapez W plus. Ensuite, nous devons écrire le texte dans ce fichier. Donc Five, point, je vais appeler la bonne fonction. C'est vrai. Ensuite, dans cette méthode d'écriture, je vais passer la variable. Je vais passer la variable, qui est du texte. Comme vous le savez, c'est une bonne habitude si vous ouvrez un fichier, vous devez également le fermer. Je vais taper la méthode file point close. Donc ça y est. Si je définis ce fichier et que je réexécute ce code, vous pouvez maintenant voir mon terminal s'imprimer en premier , il s'agit d'un simple texte. Ensuite, vous pouvez également voir mon répertoire de travail actuel, il crée un fichier texte à points reconnu. Si j'ouvre ce fichier, vous verrez ici le même texte, que nous extrayons de cette image. C'est ainsi que nous pouvons utiliser Pi resact et OpenCV ensemble, et nous pouvons facilement extraire du texte d' J'espère que c'est maintenant C pour toi, merci d'avoir regardé cette vidéo Stu pour notre prochain projet 24. T-shirt invisible utilisant OpenCV: Bonjour, et bienvenue dans un autre projet Open CD passionnant. Aujourd'hui, dans le cadre de ce projet, nous allons créer un t-shirt invisible. Je vais vous montrer la démonstration. Comme vous pouvez le voir, c'est moi et je porte un t-shirt noir. Et maintenant je vais apporter mon t-shirt invisible. Comme tu peux le voir, c'est mon t-shirt invisible. Si je porte ce t-shirt, je deviens invisible. Et vous pouvez également voir le lit à travers ce t-shirt. C'est devenu Coopeti invisible. Comme Harry Potter Invisible Clock, nous avons rendu notre t-shirt invisible. Pour créer ce genre d'effet, je vais prendre un t-shirt rouge. Vous pouvez également prendre la couleur verte, sinon la couleur bleue, mais la couleur rouge est parfaite pour moi. Et en quatre étapes, je vais copier ce projet. Chez SAS, nous devons stocker et capturer le cadre d'arrière-plan. Ensuite, nous devons détailler le tissu de couleur rouge en utilisant un algorithme de détection des couleurs et de segmentation. Ensuite, nous devons générer un masque et soustraire la couleur rouge, et enfin, nous devons générer le résultat final, c'est à ce moment-là que vous créez l'effet magique Sans perdre votre temps, passons à l'écran de l'ordinateur et démarrons la protéine. Enfin, nous sommes dans l'éditeur de code de mon studio ser. Dans un premier temps, nous allons importer le module. Alors tapez, importez le CV deux. Ensuite, je vais importer un autre module, et je vais importer le module NumPi. C'est nécessaire. Importez NumPi en tant que NP. Au début, nous devons capturer la vidéo, et je vais la capturer à l'aide de notre webcam. Ici, je vais déclarer un nom variable : capture, soulignement, capture vidéo, assigner avec, je vais appeler une fonction appelée capture vidéo, Cv point, capture vidéo Cette fonction nous est déjà familière. Ensuite, à l'intérieur des versets ronds, je vais passer à zéro. Maintenant, la question est de savoir pourquoi je passe zéro ? Parce que si nous dépassons zéro, nous pouvons accéder directement à notre webcam. Nous pouvons accéder directement à notre webcam par défaut. Si vous avez plusieurs webcams et supposons que vous en avez trois dans votre système, vous pouvez modifier le numéro en fonction de vos besoins . Je veux démarrer ma webcam par défaut, donc je passe à zéro. Ensuite, nous devons laisser un peu de temps à notre caméra pour armer. Je vais utiliser le module T. Il tape, importe, et je souhaite importer l' heure et la méthode de glissement des points temporels. À l'intérieur du bus rond, je vais en croiser un Ici, je fournis un délai d'une seconde à notre code. Ensuite, je vais déclarer une variable. Tout d'abord, je vais déclarer une variable nommée count, count assign avec zéro. Ensuite, je veux déclarer une autre variable appelée background. Fond assigné avec zéro a. Nous devons maintenant détecter l'arrière-plan. Nous devons également capturer l'arrière-plan. Nous pouvons facilement utiliser cet arrière-plan pour le masquer afin de le capturer, nous devons exécuter une boucle dans cette variable Ici, je vais utiliser for loop for I in range, et je veux régler la portée jusqu'à 60. Ensuite, dans la boucle for, je vais déclarer une variable, écrite val, return, underscore, value, val, virgule Comme je vais utiliser cette variable appelée background égale à, je souhaite exécuter la fonction capture point Rt. Capture Dot Video Tat et je souhaite exécuter la fonction de lecture. Je veux lire la vidéo que nous recevons de notre webcam. Donc, essayez la vidéo, lisez la méthode de lecture. Ensuite, je vais définir une condition IP. J'ai écrit Vallow en écrivant Val égal à faux, puis dans cette condition IP, je veux continuer cette règle Poursuivre. Cela peut être assez déroutant pour vous. Laissez-moi vous expliquer ce code étape par étape. Ce code Do Python rapide est utilisé pour capturer l' image d'arrière-plan d'une vidéo Dans notre cas, nous allons lire cette vidéo depuis la webcam. Sur un certain nombre d'images, en l'occurrence 60 images. Ensuite, passez au traitement des images vidéo et extrayez une image d'arrière-plan pour notre tâche ultérieure. Nous pouvons utiliser ce cadre pour la soustraction de l' arrière-plan, sinon pour un effet spécial comme un écran vert, etc. Au début, cette boucle sera exécutée 60 fois, qui signifie que nous exécutons le noyau situé à l'intérieur du toit pendant les 60 premières images de la vidéo. Ensuite, nous exécutons une méthode de lecture, une méthode capture de points vidéo en rouge. C'est une méthode d'OpenCV qui permet de lire une image à partir d'un flux vidéo Et la première variable bien écrite indique si le cadre a été capturé avec succès ou non. Il est écrit vrai si le cadre est lu avec succès. Sinon, il tombe en panne s'il échoue. Puis vient un autre arrière-plan variable. Comme vous pouvez le constater, nous déclarons d'abord le fond égal à zéro. Cette variable d'arrière-plan va contenir l'image réelle que vous avez extraite de la vidéo. En gros, il va capturer une image, puis nous comparons une condition si elle est écrite bien égale à fausse, afin vérifier si le cadre a été capturé avec succès. En cas d'échec d'une bonne écriture, les prographes passent à l'itération suivante de la pièce. Et si la trame n' a pas été capturée, l'état continu peut indiquer au plus pauvre ignorer le reste du code de boucle et de traiter l' itération suivante afin s'assurer que seules les images capturées avec succès sont Et maintenant, en dehors des quatre boucles nous devons retourner le cadre de capture. En gros, nous voulons refléter le cadre de capture. Sinon, il renverra l'image opposée. Pour cela, je vais associer le fond à ce que nous appelons une méthode tirée de la méthode de retournement enseignée par NumPi tie NP Ensuite, vous avez d'abord dit le processus d' exécution, nous devons fournir le fichier source, qui est l'arrière-plan. Comme vous le savez, nous avons enregistré le cadre dans notre variable d'arrière-plan. Donc, pour passer l'arrière-plan, la virgule, nous devons également passer Xs x est égal à un. Je vais retourner le cadre. Pour retourner correctement le cadre de l'image , nous devons également retourner le cadre vidéo. Pour cela, je vais exécuter ici la vidéo capturée par roundreses, et ici je vais exécuter sa méthode ouverte Le point est ouvert, puis pendant la boucle, écrite par la virgule, image, hérétique, une autre variable appelée image égale au point de capture vidéo lu Mood capture vidéo point lu après lecture de la vidéo, je veux refléter la vidéo je veux refléter Je veux filmer toute la vidéo. Encore une fois, je vais lancer Hip condition. Si ce n'est pas bien écrit, alors dans cette condition IP, je veux rompre la boucle, rompre et en dehors de la condition IP, je veux augmenter la variable count v. Count, count égal à count plus un parce que nous devons incrémenter les toilettes plus un, je veux incrémenter cette boucle Donc, pour lire l'intégralité de la vidéo image par image, il faut. Nous devons retourner tout le cadre. Donc, pour lire toute la vidéo image par image, il faut retourner les images. Ici, dans la boucle, je vais taper une image, égale à. Encore une fois, je vais taper np dot flip Method. Retourner. Ensuite, dans les presses rondes je vais passer la variable IMG, virgule X est égale à un Alors intéressez également les xs. X est égal à un. Dans notre groupe précédent, nous ne lisions que 60 images, puis je réfléchis à une image. Mais dans cette Valu, nous lisons la vidéo en entier, nous sélectionnons toutes les images, puis nous retournons toutes les images. Ici, nous retournons notre vidéo et notre image d' arrière-plan avec succès, puis nous devons convertir les images en couleur HSV Par défaut, il est livré avec la couleur BGR. Ici, je vais déclarer une autre variable appelée HSV. HSV égal à CV deux Pour changer de couleur, nous devons utiliser une méthode appelée couleur CVD, couleur CVT Ensuite, à l'intérieur de la presse ronde, nous devons d'abord passer l'image, l'image source, type Summer ING. Ensuite, pour changer de couleur, je vais appeler CV two dot color, underscore À partir de là, nous devons sélectionner la couleur Vizir Two HSV exacte Tapez donc PGR deux HSV. Celui-ci. Cela va changer toute la couleur du cadre en GR à HSV J'espère que vous connaissez déjà la couleur HSV, et maintenant nous devons créer deux masques pour isoler certaines couleurs d'une image, en particulier nous nous concentrons également sur la couleur rouge En gros, nous nous concentrons sur extraction du ton rouge dans une image Cela a été converti en couleur HSV. Ici, nous devons créer un total de deux masques et chacun des masques a besoin de deux tons colorés, ton rouge inférieur et le ton rouge supérieur. Ici, je vais taper un seul en comin définissant les plages inférieure et supérieure pour la masse 1 Je vais déclarer une variable. Dans un premier temps, je veux régler le ton rouge le plus bas. C'est pour Mass One. Alors, qui tape un taux de soulignement inférieur. Comme ici, je vais utiliser Nb AA Mth Np AI. Ensuite, au cours des rondes, je vais passer un tableau. Si le carré passe, je vais taper 140, 40. Je vais aussi parler de la vague rouge supérieure. Je commence cette ligne et je vais remplacer le taux inférieur par le rouge supérieur. Et cette fois, je vais dire que la valeur 100 est 100, valeur de saturation est 255 et la valeur est 255. Maintenant, laissez-moi vous expliquer ces deux lignes. Comme vous pouvez le voir, nous créons un tableau de nombres et dans ce tableau, nous avons au total trois Vo, Henry p trois Vo 140 et 40. La première valeur représente Hu, la seconde représente la saturation et la dernière représente la valeur. En gros, représentez une étiquette colorée. Je mesure en degrés. Pour Open CB, nous utilisons 021 à 80 degrés, mais traditionnellement, sa plage est de 023 à 60 Puis vient la saturation. La saturation détermine l' intensité ou la pureté du froid. Zéro est gris et 255 est une couleur complètement saturée. Ici, nous utilisons 40 et la saturation est relativement faible. Cela signifie que la couleur sera un peu trop large ou fatiguée. Et la dernière valeur contrôle la luminosité. Il contrôle la luminosité de la couleur. Zéro représente le noir et 255 représente la pleine luminosité. La valeur que nous utilisons est le bleu. Ce qui signifie que la couleur sera relativement foncée. Dans cette variable, nous capturons une sorte de couleur bleu verdâtre plutôt que de couleur rouge De la même manière, nous parlons de valeur rouge supérieure. De plus, la variable rouge supérieure contient la même couleur, mais sa luminosité et son intensité sont élevées. Il ne s'estompe pas. Et maintenant je vais créer la variable mask one. Mlle One. C'est le masque 1, le masque de Hemel assigné avec un CV à deux points, et je vais appeler une méthode appelée in range Je range. Ensuite, vous avez dit que le tour pressait, je passe au HSV, la virgule permet de passer le taux inférieur et le taux supérieur Virgule du taux inférieur, vous devez également passer le taux supérieur. C'est notre premier masque. Ici, nous créons un masque binaire basé sur une plage de couleurs spécifiée. Comme je vous l'ai dit, nous devons créer un autre masque. Je comprends cette section et je vais d'abord changer la commande. C'est pour le masque 2, et nous devons également utiliser la même variable, taux inférieur et le taux supérieur. Mais cette fois, je vais changer les angles de couleur. Je vais également modifier les valeurs. Donc, ici, je vais égaliser 155 degrés. Et pour le coin supérieur droit, je vais passer à 180 degrés, puis je vais changer la longueur variable. C'est le masque numéro 2. Et maintenant je vais combiner les deux masques. Donc ici, je vais taper le masque un égal à la masse, un plus le masque deux. Si nous l'adaptons, cela permettra détection plus complète de la couleur rouge Après avoir fait marcher les deux masques, nous devons affiner le masque. Nous devons supprimer tout le bruit du masque. Pour cela, hémorrotide, masque un, masque un, assigner W, ici, nous devons exécuter une méthode depuis OpenCB qui appelle la morphologie X. Elle peut supprimer tous les points de bruit du Hémorrotide, CV à deux points, morphologie X. Celui-ci. Ensuite, à l'intérieur des rondeurs, en guise de première prière, nous devons passer la source, l'image source en métal, qui est le masque 1 Après le coma, vous devez appeler ici une opération d'ouverture morphologique Encore une fois, je suis ouvert à deux points de type C. Dans ce cas, nous passons d'abord à un binnymsk créé plus tôt où le pixel blanc représente la zone d'intérêt, et le pixel noir représente l'arrière-plan ou les zones ignorées Ensuite, nous procédons à une opération d'opinion morphologique. Il s'agit d'une opération en deux étapes. D'abord, il effectue une érosion, puis il effectue une illusion L'érosion élimine les petits bruits blancs. En particulier, les pixels isolés et la dilution restaurent la taille des zones blanches plus grandes. Cette opération est particulièrement utile pour retirer de petits objets. Dans notre cas, le bruit. Le bruit ne fait pas partie de notre moyenne de détection. C'est pourquoi nous devons le supprimer. Nous devons maintenant créer un élément structurel, sinon la taille du noyau. Pour cela, je vais passer une virgule, et je vais utiliser la fonction de Numbi type NP Oce Ensuite, dans les presses rondes, je vais passer le grain de la taille 3 au 333 Club. Ensuite, nous devons également transmettre le type de données de ce pixel, qui est NP point UN serré. Cet index d'édition non signé est couramment utilisé dans traitement informatique car il peut représenter Ensuite, après le coma, nous devons transmettre la valeur d'itération. Des itérations, et je veux l'exécuter deux fois. Je vais en passer deux. Cette itération a spécifié le nombre de fois que l'opération d'ouverture est appliquée Dans ce cas, cette ouverture est appliquée deux fois. Les opérations multiples augmentent l'effet d'étamage. C'est pourquoi nous avons besoin de cette itération. Après cela, nous devons effectuer la dilatation dans le masque 1. Encore une fois, je vais taper mask one comme ici je vais appeler la méthode du CV deux, connue sous le nom de dilate it Donc, tapez C deux, point, dilate. Ensuite, à l'intérieur des tours, nous devons d'abord sélectionner le masque Je suis en train de taper mask 1, puis nous devons passer les côtés du noyau. Tapez à nouveau NP point un. À l'intérieur des cuivres ronds, je vais passer trois virgules trois Ensuite, nous devons mentionner le data dive, qui est NP INT huit. Ensuite, atracma, nous devons également mentionner l' itération, mais avant, nous devons déplacer toute cette section dans le Ici, je vais mentionner l'itération. Cette fois, nous ne voulons qu'une seule itération. Maintenant, le quotien, c'est ce qui est composé et, en gros, ce que vous allez faire ? Cette opération élargit la zone blanche du masque, agrandit le résultat détecté et comble de petits trous. Et cela améliore la robustesse du masque. Ensuite, nous devons inverser le masque. Nous devons transformer le pixel blanc en noir et le pixel noir en blanc. Et pour cela, nous devons utiliser VT is not operator. Donc, nous devons d'abord taper mask, deux pour sélectionner le masque, deux égaux à Ici, tapez C V deux, point, , bit, bit , bit à zéro. Nous apprenons déjà l'opérateur bit à bit. Je ne vais pas expliquer ici comment fonctionnent les opérateurs bit à bit, comme Bt zéro, bit à bit dans les Rundresses, je vais passer le Ici, nous affinons le masque correspondant à la couleur rouge détectée. Après avoir affiné notre section de masque, nous devons générer la sortie finale. Et maintenant, nous devons créer au total deux sorties distinctes. Dans la première sortie, je vais montrer l'arrière-plan où la couleur rouge est détectée Dans la deuxième sortie, je souhaite exclure les zones de restauration. Créons la première sortie pour l'arrière-plan. Ici, je vais taper et je vais très bien m'en servir comme ressource. R est une ressource un égal à deux, et nous devons utiliser pTS Operator, PTI et operator Alors attachez le CV deux, point, B dans le sens des points, puis à l'intérieur des versets ronds, je vais passer l'arrière-plan. L'arrière-plan est l'image, qui représente la scène dans laquelle vous souhaitez afficher les parties des images en fonction de la courbe rouge détectée. abord, nous devons transmettre l'arrière-plan et nous le créons déjà. Laisse-moi te montrer. Ce contexte. Comme vous pouvez le constater, nous inversons l'arrière-plan. Je vais copier la variable d'arrière-plan. Je vais coller des jouets instantanés et Operitot est l'image d' arrière-plan, qui représente la scène où vous souhaitez afficher des parties de l'image en fonction de leur couleur rouge détectée Ensuite, après le coma, nous devons transmettre la source, source deux, qui est l'arrière-plan. Ensuite, nous devons transmettre la méta. Et je vais taper une masse égale à une masse un. Fondamentalement, ces variables stockent l'arrière-plan où la couleur rouge est détectée. Nous devons maintenant extraire les cadres actuels sans couleur rouge. Encore une fois, je vais déclarer une autre variable RDs deux. C'est resos deux égal à C deux, encore une fois lorsque nous utilisons cet opérateur Is N. Ensuite, dans les presses rondes, cette fois, je vais passer la source vidéo. Comme vous pouvez le voir, nous avons défini cette source vidéo comme variable d'image, IMG. Voici notre flip video. Je vais copier cette variable, et je vais la transmettre ici. Encore une fois, nous devons transmettre la source deux, c'est la source deux, et je veux l'attribuer à st deux. Je vais taper Metal Mask, Toado Mask Two. En gros, B towise et l'opérateur exécutent une opération sur deux images, sinon, entre une image et un masque Il est utilisé pour fusionner deux images sur la base d'une opération logique qui compare la valeur des pixels à chaque position correspondante de l'image. La première source est la première image d'entrée et la deuxième source est la deuxième image d'entrée, et les paramètres du masque spécifient le pixel à prendre en compte pour l'opération. Nous devons maintenant créer le o final. Je vais donc déclarer une variable final underscore out Résultat final équivalent à ici, je vais appeler une méthode, CV deux, C deux points ajoutent du poids. Type de son A, D, celui-ci, c'est bon En gros, nous utilisons cette méthode pour lier deux images. Ici, je vais fournir la première image, ressource 1, RD en est une. Nous devons également transmettre la valeur Alpha, qui est une virgule flottante. Donc, pour passer une virgule, nous devons transmettre la source deux, et c'est R est la ressource deux Et encore une fois, c'est bien de dépasser le point de flottaison. En ce moment, nous allons passer le point flottant de la bêta. Encore une fois, je vais en adopter une. Enfin, je vais passer devant Gama Val. Le gamma est nul. Cette fonction lie deux images en les combinant avec un poids spécifique. Au début, nous devons transmettre la valeur source une, puis nous devons transmettre la valeur Alpha, puis la source deux, puis nous devons transmettre la valeur bêta, enfin, nous devons transmettre la valeur Gamma. Nous devons maintenant afficher le résultat final dans une fenêtre. Pour cela, je vais lier CV à deux points, méthode Im, méthode IMF, IMF. Ensuite, les robes rondes, je vais passer. Première unité pour octet le nom de la fenêtre, qui est un t-shirt invisible, et nous devons également transmettre le dernier. Je copie cette variable et apracma je vais transmettre la Finale. Ensuite, nous devons quitter le programme où nous louons une clé spécifiée. Nous appuyons sur la touche ESC de notre clavier, je veux quitter le programme Pour cela, je vais déclarer une variable K égale à la méthode CV à deux clés humides. Touche mouillée à l'intérieur des presses rondes, je vais dépasser le délai de dix millisecondes Ensuite, on me définit une condition profonde I K égale à 27, puis dans une telle condition, je veux rompre la boucle, rompre. Je crois que j'ai fait un peu de mistic. J'ai fait un travail très sllistique, nous devons déplacer le code dans le niveau d'indentation, nous devons le déplacer dans le Je vais fournir l'espace et le déplacer à l'intérieur du niveau d' indentation Sinon, il ne fonctionnera pas. Une par une, je vais déplacer toutes les lignes à l'intérieur du niveau d'intention Maintenant, ça a l'air parfait. Comme vous le savez, 27, c'est asykey. C'est le code d'une clé ignorée. Lorsque nous louons Scape Key, cela va briser la boucle et affecter notre programme. Maintenant, configurons le fichier et exécutons le code dans notre terminal pour voir s'il fonctionne correctement ou non. Je vais donc appuyer sur le bouton Exécuter. Après avoir appuyé sur le bouton Exécuter, nous devons attendre quelques secondes. Le démarrage de la webcam prend du temps. De plus, je vais passer devant cette webcam car nous devons saisir l'arrière-plan. Comme vous pouvez le voir sur votre écran, cela ouvre la webcam et vous pouvez également voir que je ne suis pas dans cette fenêtre. Donc c'est moi et je porte un t-shirt noir. Maintenant, je vais prendre mon t-shirt invisible. C'est mon t-shirt invisible. Comme vous pouvez le voir complètement invisible, vous pouvez voir le monde d'arrière-plan à travers lui. Maintenant je vais porter ce t-shirt et devenir invisible. Après avoir porté ce t-shirt, comme vous pouvez le voir, je suis devenue complètement invisible. Vous pouvez également remarquer de petits problèmes, mais cela fonctionne très bien. Il s'agit du projet où nous fabriquons un t-shirt invisible. J'espère que ce projet vous plaira. Merci beaucoup et restez connectés pour le prochain tutoriel. 25. Soustraction d'arrière-plan – OpenCV: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre projet lié à Open CPI et aujourd'hui, dans ce projet, nous allons exécuter abonnement en arrière-plan en utilisant Open SIP L'abonnement en arrière-plan est un moyen d'éliminer l' arrière-plan de l'image. Pour ce faire, nous extrayons le premier plan mobile de l'arrière-plan statique La soustraction en arrière-plan a plusieurs cas d'utilisation au quotidien. Il est utilisé pour la segmentation des objets, renforcement de la sécurité, suivi des piétons, le comptage du nombre de visiteurs, le nombre de véhicules en circulation, etc. Il est capable d'apprendre et d' identifier le masque de premier plan. Dans Open Civi, nous avons trois algorithmes pour effectuer cette opération Je vais vous montrer les algorithmes. Ce sont les trois algorithmes que nous pouvons utiliser pour soustraire le bruit de fond. Il s'agit de notre premier algorithme, le background substract ou MG Il s'agit d'un algorithme de segmentation du premier plan basé sur un mélange gaussien premier plan Nous allons d'abord l'utiliser. Dans un premier temps, je vais importer les bibliothèques. Je vais lier Import et nos premières bibliothèques sont NumPi NumPi à N P. Ensuite, nous devons importer le CV de la bibliothèque la plus importante Importation du temps. CR deux. Maintenant, nous devons d'abord créer un objet à l'aide de cet algorithme. Quel est notre premier algorithme, data Substrctorg ? Je dois copier le nom de cet algorithme et je vais d'abord déclarer une variable où se trouvera notre premier objet. Il s'agit essentiellement d'un algorithme de substructeur du premier plan à l'arrière-plan Je vais l'appeler G BG, G VG one. Ceci est trouvé dans le sous-secteur vectoriel 1, égal au type hermano, CV à deux points, et nous devons appeler une autre méthode, et le nom de notre méthode est BG AC GA, celle-ci Ensuite, je vais taper point, et nous devons créer le type d'objet, créer, et je vais coller notre premier sous-constructeur d'arrière-plan, celui-ci Enfin, je vais transmettre ss. C'est le premier objet que je crée à l'aide cet algorithme, le sous-structeur d'arrière-plan Ensuite, je vais capturer le cadre de l'appareil photo. Je vais donc prendre une capture CAP variable, un CAP, l'assigner à elle et appeler C point videocapture Capture vidéo. Ensuite, à l'intérieur de la cavité ronde, nous devons passer les sources Nous allons activer ma webcam par défaut , donc je vais passer à zéro. Après cela, nous devons exécuter une boucle infrate while. Je vais donc le taper dans la zone la plus ronde, je veux dire que c'est vrai Si la condition est vraie, alors à l'intérieur du i, je veux d' abord capturer le cadre. Nous devons lire les cadres. Pour lire les cadres, vous devez également déclarer le type de valeur Gulen. Il s'agit du Willian Valu stocké dans Bullen Value. Je vais également renvoyer l' image depuis le cadre Je vais taper ING, égal à, et nous devons exécuter la fonction de lecture. Ne peut pas lire. Cette méthode permet de lire sur les cadres. Au début, il va renvoyer une valeur de vol, quelle valeur de Bullen Il va stocker s' il y a un cadre ou non. Ensuite, l'image, elle va stocker l'image réelle, sinon, le cadre réel. Ensuite, à l'intérieur du VIL, en allant créer le masque, le premier masque utilisant cette image. Pour cela, je vais créer un Gmass One amusant. Il s'agit de la masse 1 de G, égale à Helm pour appliquer cette image à cet objet. Casque de type G, BG One a enseigné Apply Mass Boot. Ensuite, vous avez dit « presses rondes », je vais passer l'image IMG. Ici, nous appliquons un masque pour la substruction de l' arrière-plan. Ensuite, je veux afficher ce masque et également afficher l'aile d'origine. Dans un premier temps, je vais afficher la fenêtre d'origine. Je vais attacher du métal IMF à deux points en C, puis à l'intérieur la résistance ronde à l'intérieur de la couche unique, c'est la fenêtre d'origine, où je veux faire des séquences de webcam, du type original et là je vais passer une image variable. Comme vous le savez, la variable image stockait le métrage original. C'est pourquoi je dois transmettre l'image. Et encore une fois, je vais appeler Ema Show math. Je duplique cette ligne. Mais cette fois, je veux montrer l'algorithme Mg. Je copie le nom MG et plus, remplace l'original par MG. Je remplace IMG par GMGMsk G mask O. Et maintenant nous devons appeler la méthode wet Ici, attachez K égal à la méthode K par ensemble de deux points CV. Puis, au cours de la ronde inversée, je vais passer les 30 millisecondes De plus, ici, je vais passer l'opération BTI, donc je vais utiliser un opérateur et je vais transmettre un code By, zéro XF Ensuite, nous lisons cette ligne. Ensuite, je vais définir une condition pour SkepkherType, I K égal à 27, puis à l'intérieur de ce bloc E, je veux rompre Pause. Comme vous le savez, 27 est le code pour Scape Key. Ensuite, après avoir rompu la boucle, je vais régler la boucle IE, je veux relâcher la caméra. Alors je suis fatigué, capturez, cassez, balayez, libérez du bois de méthamphétamine Hausse. De plus, je dois détruire toutes les fenêtres, donc je vais taper C deux, pour détruire toutes les fenêtres. Configurons donc le fichier et je vais l'exécuter. Après avoir exécuté ce code, il ouvrira au total deux fenêtres. Dans notre première fenêtre, on accède à la séquence vidéo originale. Je veux voir la séquence vidéo colorée et la deuxième fenêtre, consacrée au masque de fond pour le bas. Maintenant, définissons le code et voyons ce qu'il va renvoyer. Je veux appuyer sur le bouton Exécuter et nous devons attendre un certain temps pour démarrer la caméra. Comme vous pouvez le voir, allumez ma webcam et je vais déplacer cette fenêtre à côté de cette fenêtre originale que vous pourrez facilement comparer. Comme vous pouvez le voir, il s'agit notre fenêtre d'origine et voici le masque MOG Comme vous pouvez le voir, ce filtre est écrit par opérateur bit à bit, et lorsque je déplace ma main, sinon mon corps, vous pouvez identifier la partie mobile en blanc. Fondamentalement, il a défini la zone de couleur blanche. C'est la partie mobile de mon corps. C'est pourquoi il a capturé ces sections. Et si tu veux devenir invisible, reste immobile et ne bouge pas. Comme vous pouvez le constater de temps en temps, je deviens invisible et lorsque je bouge ma main, elle suit la zone en mouvement. C'est ainsi que nous pouvons soustraire l'arrière-plan et n'afficher que la partie mobile Parlons maintenant de l'algorithme suivant. Je vais supprimer sur Windows. Créons maintenant l' objet suivant en utilisant l'algorithme Mg 2. Fond sous-structuré Mg deux. Tout d'abord, je vais dupliquer cette ligne et je vais changer le nom de la variable. Voici MGMG 2. Nous pouvons également le supprimer. Nous n'avons pas besoin de cette méthode pour cela, et je vais remplacer MOG par Mog two Ensuite, je vais créer un masque. Pour cela, je vais dupliquer cette section et remplacer le masque un par masque deux. Nous devons également remplacer la variable, celle-ci, Healtide GBG deux, et appliquer cette image à ce second objet Ensuite, nous devons l' afficher dans notre fenêtre. Je vais dupliquer cette section et afficher le masque deux. Je vais changer le nom de la fenêtre. Voici le MOG 2. Voyons, après avoir appliqué cette fonction, ce qu'elle va renvoyer. Pour configurer ce fichier, encore une fois, je vais exécuter ce code dans mon terminal, et nous devons attendre quelques secondes pour démarrer la webcam. Maintenant, comme vous pouvez le voir, nous devons distinguer trois fenêtres. C'est MOG 2, c' est MOG et voici la fenêtre d'origine Voyons maintenant la différence. Comme vous pouvez le constater, si nous comparons Mg 2 à MG 1, OG Two offre une meilleure adaptabilité aux différentes scènes en raison des changements d'éclairage Je tiens à dire qu'il adopte une lumière plus précise que le MOG. C'est pourquoi tu peux reconnaître mes expressions faciales. Comme vous pouvez le constater, lorsque je déplace ma main, Mg 2 renvoie l'image complète de main car cet algorithme lit mieux les lumières que MOG Appliquons maintenant notre prochain algorithme. Je ne ferai que gagner. Ce type, je vais appliquer un meilleur sous-structeur GMG. Encore une fois, je vais dupliquer cette section et remplacer GBG deux par GBG trois C'est Fun Background Three. Encore une fois, nous devons taper Cv point BG ACG, créer un sous-structeur Bagnew et passer ici Et ici, vous pouvez voir cet algorithme combiner une image de fond statistique, une estimation et une segmentation par bassin par perfixel sous-structeur Bgrou Mg two est également un algorithme de segmentation du premier plan basé sur un mélange gaussien Le sous-structeur Bgrou Mg two est également un algorithme de segmentation du premier plan basé sur un mélange gaussien. Créons un masque pour le troisième algorithme. Super créez l'objet, je vais créer le masque. Je vais créer cette ligne. Et je vais remplacer le masque deux par les marques trois et je dois également remplacer le nom de l'objet. Et vous devez également changer le nom de l'objet, GBG trois. Après avoir créé le masque, nous devons également afficher ce masque dans Windows. Encore une fois, je vais dupliquer cette ligne et remplacer Mg deux par GnG ici, nous devons afficher le masque trois pour les masques de fond trois et nous serons satisfaits Après avoir passé ce fichier, encore une fois, je vais exécuter la partition à mon tour. Vous pouvez maintenant comprendre tous les algorithmes. Maintenant, vous pouvez voir que nous avons quatre fenêtres au total et je vais les organiser selon la commande, d'origine, OMG deux et Voici notre fenêtre d'origine. Voici la fenêtre MG, et voici Mg deux et la dernière est G&G. Vous pouvez maintenant identifier la différence entre toutes les Vous pouvez comparer les trois résultats entre eux. Si vous remarquez GMG ici, vous remarquerez qu'une fois le modèle d'arrière-plan établi, l'algorithme applique une segmentation du bassin à chaque pixel et la segmentation bayésienne est une méthode probabiliste est une Cela calcule la probabilité qu'un pixel appartienne au premier plan ou à l' arrière-plan en fonction de son intensité Vous pouvez également remarquer que cela exagère le pixel des commandes. Mais ces trois algorithmes fonctionnent parfaitement. Il soustrait l'arrière-plan et le représente en noir et affiche la partie mobile en blanc C'est pourquoi ces algorithmes sont largement utilisés dans l'analyse vidéo en temps réel, caméras de surveillance et les systèmes de surveillance du trafic. Il est également utilisé pour le suivi d'objets. Voici donc comment nous pouvons soustraire l' arrière-plan du premier plan J'espère que c'est clair pour toi maintenant. Donc, dans ce didacticiel, je vous montre que nous avons un total de trois algorithmes qui peuvent être utilisés pour la soustraction en arrière-plan. Et selon moi, Sig One est le meilleur MOG Sinon, vous pouvez opter pour MOG. L'algorithme GG est assez bruyant. Ces algorithmes sont prédéfinis dans Open Series, nous n'avons donc pas besoin d'en faire trop pour cela, nous devons les appliquer. J'espère que ce projet vous plaira. Merci d'avoir regardé cette vidéo, restez connectés pour le prochain tutoriel. 26. Détection de visage en utilisant Python et OpenCV avec webcam: Bonjour, c'est bon de te revoir. Encore une fois, je suis de retour avec un nouveau projet lié à Python OpenCV Et aujourd'hui, dans ce projet, nous allons créer une détection de phase. Oui, nous allons créer une détection de phase en utilisant Open C. Donc, avant de commencer notre programme, voyons la démonstration. Et comme vous pouvez le constater, il détecte avec succès notre visage et crée un rectangle autour de celui-ci. Et chaque fois que je déplace mon visage avec mon visage, cela déplace également le rectangle. Cela signifie que notre programme fonctionne parfaitement. Il peut détecter les visages. Et si je place ma main devant mon visage, vous pouvez voir qu'elle a retiré le rectangle et si je la déplace vers l'extérieur, encore une fois, elle montre le rectangle. Alors, sans perdre votre temps, passons à l'aspect pratique. Ce projet a utilisé la bibliothèque OpenCV pour effectuer une détection de phase en temps réel en utilisant Rob Cam comme caméra principale Mais pour créer le projet, nous devons télécharger quelque chose. Nous devons télécharger un classificateur Hear Casket, très bien. Passons donc au navigateur. Comme vous le savez, dans le cadre de ce projet, nous effectuons une détection de phase. J'ouvre donc mon moteur de recherche, Google, et je recherche har Cascade, NSCFontpas underscodfault, point N. Oui, nous devons Après avoir recherché ce fichier, comme vous pouvez le voir, il fournit un site Web, un lien GitHub, ArcascadeFontAlfas, underscofat point Je vais rediriger vers cette page, et c'est la page ML que nous devons fermer. Il existe de nombreux cercueils rigides disponibles pour différentes parties du corps, telles que les yeux, les lunettes, les fontalfas , les fontalpas par défaut, le corps entier, corps entier Mais nous devons sélectionner celle-ci, Hardcasket UnderscoFontal phase, undersco default La grande question est quoi il s'agit et pourquoi nous devons télécharger ce fichier. Ce fichier est un classificateur de pré-tente utilisé par Popsii pour détecter les phases Ce classificateur est entraîné pour détecter les phases fontales humaines. Un HRGSKe est un algorithme de détection d'objets utilisé pour identifier des objets dans une image ou un flux vidéo Cela fonctionne en entraînant le modèle à reconnaître le motif dans l'image à l'aide de caractéristiques similaires, qui sont similaires aux filtres de découpe des bords Et ce classificateur est déjà construit en s' entraînant sur de nombreuses images positives telles que l'image du visage fontal et aussi des images négatives Je veux dire image sans visages. Sur la base de cette formation, le classificateur apprend à détecter les modèles faciaux J'ai donc déjà enregistré beaucoup d'algorithmes de soins du visage sur ce fichier. Nous n'avons donc pas besoin d'enseigner notre modèle par nous-mêmes. Je vais télécharger ce fichier et je vais l'enregistrer dans mon répertoire de travail actuel. Donc, comme vous pouvez le voir dans mon répertoire de garantie actuel, il y a un nom de fichier accroché en cascade, phase underscoefondL souligne le point par défaut L nous avons Il s'agit d'un classificateur en cascade de caractères pré-entraîné, qui est un algorithme spécifique conçu pour détecter la phase dans les images En une seule phrase, ce fichier contient les données nécessaires pour détecter les phases dans les images. Dans un premier temps, nous devons importer la bibliothèque. Ici, je vais importer notre bibliothèque OPC. Importez le CV 2, puis nous devons charger correctement le cercueil rigide Pour cela, je vais déclarer une variable et je vais déclarer et notre variable est A, A, assign Wi, CV à déclarer et notre variable est A, A, assign Wi, deux points d'ici, je vais appeler le classificateur de cascade de méthamphétamine, un classificateur cascade de type Ensuite, à l'intérieur du laiton rond, à l'intérieur des codes doubles, je vais copier le chemin du fichier. Sinon, définissez son nom. Ici, je vais copier le bon nom et revenir au fichier point Pi principal. Ensuite, dans le double code, je vais coller le nom fin, HCASCDUnderscoe fontal phase, underscoe default Ce fichier est enregistré au format XML. Ensuite, nous devons capturer le flux vidéo de la webcam U. Pour cela, je vais déclarer une autre variable, et le nom de notre variable est CAN Cam. À partir de là, nous allons exécuter une capture vidéo à deux points en mode mathématique . Ensuite, à l'intérieur des renfoncements ronds, nous devons fournir la source de la caméra Ici, j'utilise ma webcam par défaut, donc je vais passer à Z Ensuite, nous devons exécuter une boucle infinie pour capturer l'image en continu depuis cette caméra. Pour cela, nous allons entrer dans cette interface utilisateur, nous devons lire le cadre de l'appareil photo. Type d'ourlet : Cam Cam, méthode de lecture par points. Lisez cette méthode, pour revenir à Dull Two VDU. Nous devons donc stocker ce vario dans une variable. Tout d'abord, il renvoie une valeur booléenne indiquant que le cadre a été lu avec succès ou non Je vais donc trier cette valeur Bolen dans la variable RET. C alors il va renvoyer l'image réelle. Pour stocker l'image, je vais déclarer ici une autre variable, CNKSCimage IMG, affectée à la fonction Cam point read Cette variable va stocker la valeur booléenne et cette variable va stocker l'image réelle, que vous obtenez à partir de ce cadre Et maintenant, nous devons convertir ce cadre coloré en image rapide Cheveux savonneux, je vais taper du gris. Gray, assignez avec, je vais exécuter une fonction appelée couleur CVD Couleur Cv CVT. Ensuite, dans la résolution ronde comme source, je vais transmettre cette image de cabine variable. Nous allons convertir les fichiers image CaM en couleur grise. Ensuite, en tant que deuxième source, nous devons transmettre le code initialisé, qui est CV à deux points, et je veux convertir la couleur en couleur BGR en couleur grise Donc, tapez, coloriez sous scope et nous devons convertir BGR en couleur grise de type BGR en couleur grise Celui-ci. En gros, la détection de phase fonctionne mieux sur les images en niveaux de gris, ce qui simplifie le processus. Nous devons maintenant détecter les phases à partir du cadre en niveaux de gris. Pour cela, nous devons utiliser un détecteur de méthamphétamine à plusieurs échelles. Ici, je vais déclarer une autre variable et le nom de ma variable est phase, assigner avec un point, DeTTT un Ensuite, à l'intérieur des presses rondes , nous devons d' abord transmettre l'image source, ce qui est excellent. Ensuite, nous devons passer le facteur d' échelle, qui est de 1,3. Ensuite, nous devons passer le nombre minimum de rectangles jamais. Pour cela, je vais passer six. Dans cette méthode, nous passons d'abord le gris de la source d'image. Ensuite, nous obtenons le gain sur le facteur d' échelle. Ici, je passe la 0,3. 0,3 est le facteur d'échelle qui détermine dans quelle mesure la taille de l'image est réduite à chaque échelle d'image et six est le nombre minimum de leviers Un rectangle doit être considéré comme une phase. Cette variable de phase va stocker toutes les phases de l'image en niveaux de gris à l' exception des coordonnées de phase Maintenant, en utilisant ces coordonnées, nous devons dessiner un rectangle autour de celui-ci. Dessinons donc un rectangle. Nous devons dessiner un rectangle autour des faces détectées. Pour cela, nous devons utiliser le formulaire. Pour entrer dans le Y. Je vais donc taper quatre à l'intérieur des touches rondes ici, nous introduisons quelques coordonnées comme X un, Y un, W un, H un H un Ensuite, à l'intérieur de ce pl boop, nous devons dessiner un rectangle en utilisant ces coordonnées Donc, comme vous le savez, pour dessiner un rectangle, nous introduisons la méthode des rectangles CV, rectangle à deux points. Ensuite, vous définissez le RoundressF dont nous avons besoin pour passer l' image source, image dans laquelle nous voulons dessiner le rectangle comme image source. Je passerais cette image variable CaM Ma. Ensuite, nous devons passer les points pour dessiner le rectangle. Mais avant de comprendre les points. Ces quatre boucles itèrent les phases de détection globales qui sont stockées dans une variable de phase Et pour chaque phase détectée, XY et Y un représentent le coin supérieur de la phase, et W un et H un représentent la mauvaise herbe et la hauteur. Ces deux valeurs combinées représentent le coin supérieur de la lèvre cette valeur représente humidité et cette valeur représente la hauteur. En utilisant ces coordonnées, nous allons dessiner le rectangle. Et comme vous le savez, pour dessiner le rectangle dans OpenCV, il faut en passer deux au total, il faut en passer deux au total supérieur de la lèvre et le coin inférieur droit Pour le coin supérieur gauche, nous avons déjà les coordonnées. Alors voilà, je vais passer X Conga Y, X un, Y un. Ensuite, nous devons transmettre la valeur du coin inférieur droit et nous n'avons pas la valeur du coin inférieur droit, mais nous pouvons calculer la valeur du coin inférieur droit. Laissez-moi vous montrer comment faire. Pour calculer la valeur du coin inférieur droit, nous devons additionner valeur y1s avec un rectangle avec, qui est Ensuite, nous devons calculer YR plus H un, hauteur. Dans un premier temps, nous ajoutons avec la valeur xs, puis nous ajoutons la hauteur avec Y xs dedans. Combiné, cela va renvoyer le coin droit du bouton v. Maintenant, nous devons passer une autre valeur qui est colorée ici, je vais utiliser la couleur bleue. Tout d'abord, je vais passer 2550, zéro. Ensuite, je vais passer le nœud, l'épaisseur de la bordure du rectangle. Je vais passer trois et vous pouvez également utiliser une valeur plus élevée pour cela si vous en passez cinq ou six. Je vais passer cinq ans. Après avoir dessiné le rectangle autour du visage, nous devons afficher le cadre avec la phase détectée. Pour afficher les images à la phase détectée, nous devons sortir de ces quatre boucles et afficher ici le métal IMF. C deux points à mon humble avis, ils ont dit les robes rondes. premier temps, nous devons fournir un nom de fenêtre et le nom de la fenêtre est face, puis nous devons fournir l'image source, qui est Cam Image. C'est ça. Nous devons également définir la touche Wet pour arrêter le programme. Ici, je vais taper I CV avec une touche à deux points à l' intérieur du rond. Je vais la régler à nouveau sur un, une milliseconde et zéro F est égal à À l'intérieur des presses, si nous louons le petit A, alors dans cette condition p, je veux rompre la boucle. Je veux briser la boucle Y, la casser. Si nous louons A, cela bouclera la boucle et vous tuera. Ensuite, nous devons libérer la ressource de la webcam. En dehors de la boucle d'identification, type Hemel, point de came, méthode de libération Nous devons également détruire toutes les fenêtres, type S, CV deux, point, détruire toutes les fenêtres. Celui-ci. Je vais configurer ce fichier. Maintenant, exécutons le code dans mon terminal et voyons s'il fonctionne correctement ou non. Après avoir configuré ce fichier, je vais appuyer sur le bouton Exécuter, et nous devons attendre un certain temps pour démarrer ma webcam. Enfin, après une attente de quelques secondes, notre fenêtre s'ouvre. Comme vous pouvez le constater, il détecte avec succès notre visage et crée un rectangle autour de celui-ci. Chaque fois que je déplace mon visage avec mon visage, cela déplace également le rectangle. Cela signifie que notre programme fonctionne parfaitement. Il peut détecter les visages. je place ma main devant mon visage, maintenant vous pouvez voir qu'elle a retiré le rectangle et si je la déplace à nouveau, elle montre le rectangle. À l'aide de ce faux fichier de cercueil FontAlPashar, nous Fermons maintenant la fenêtre et revenons au code de Visual Studio. J'ai donc réussi à créer un programme de détection de phase en utilisant OpenCV Ce n'est pas une question très difficile. C'est un projet très simple. J'espère que ce projet vous plaira beaucoup et que vous comprendrez également le fonctionnement de la détection de phase. Merci donc d'avoir visionné ce calendrier vidéo pour notre prochain projet. 27. Détecter des objets de couleur similaire dans Python en utilisant OpenCV: Bonjour, les gars, c'est bon de vous revoir. Une fois de plus, je suis de retour avec un nouveau projet lié à Pythonopen CV Aujourd'hui, dans le cadre de ce projet, nous allons effectuer un suivi d'objets à l' aide de la segmentation des couleurs. Oui, nous allons suivre l' objet en utilisant une segmentation basée sur les couleurs. Le suivi d'objets est une technique de vision par ordinateur permettant de localiser la position d'un objet sur une image ou une vidéo. N'oubliez pas que reconnaître l'objet et suivre l'objet sont deux choses différentes. Dans le suivi d'objets, vous pouvez suivre n'importe quel objet en mouvement, mais dans le cas de la détection d'objets, vous pouvez identifier l'objet. Ce sont deux choses totalement différentes. Il existe de nombreux types de méthodes de suivi d'objets dans OpenCV, telles que la méthode basée sur la segmentation des couleurs, différenciation des images et la base de correspondance des fonctionnalités Au niveau institutionnel, nous allons effectuer suivi des objets basé sur la segmentation des couleurs, et pour effectuer un suivi des couleurs efficace, nous allons convertir la couleur bGir en couleur HSV Comme vous le savez, HSV est l' abréviation de hue saturation vue. Hue représente la couleur, Vallow représente la quantité de couleur et la saturation représente la quantité de gris Sans trop parler, laissez-moi vous montrer un exemple de ce que nous allons créer dans ce didacticiel. Vous pouvez maintenant le voir suivre avec succès notre objet. Il peut suivre notre bouchon de bouteille de couleur bleue. Dans notre fenêtre cadre, vous pouvez voir les images originales et dans notre fenêtre de masque, vous pouvez voir ici les images de l'opérateur BTI Ici, le blanc représente le bouchon du flacon et la couleur noire représente la zone non sélectionnée. Mais dans notre troisième fenêtre RIAs, vous pouvez voir ici l'objet couleur réel Ici, vous pouvez voir le bouchon exact du flacon. Sans ce bouchon, vous ne pouvez rien voir ici car il ne suit que cette segmentation de couleur à partir de cette fenêtre. C'est ce que nous allons créer dans ce projet. Passons à l' écran de l'ordinateur et démarrons le projet. Comme vous pouvez le voir, nous sommes enfin dans mon éditeur de code Visa Studio, et j'ai déjà créé un fichier Python main point py. Rapidement, je vais importer notre importante bibliothèque. Je vais taper import, et je vais importer le CV 2. Ensuite, je vais importer Numpi. Oui, Numpi est important pour créer ce type de projet. Je vais taper import NumPi en tant que NP, ensuite, nous devons importer le tracé Pi à partir de la feuille matplot Il tape, importe le diagramme Pi de la feuille matplot en tant que PLT. Ici, nous allons effectuer le suivi des objets en fonction de la couleur de l'objet. Le suivi et la reconnaissance d'objets sont des choses totalement différentes. Dans le suivi d'objets, nous pouvons suivre n'importe quel objet en mouvement. Mais dans le cadre de la reconnaissance d'objets, nous devons reconnaître l'objet en question. Comme je vous l'ai dit plus tôt, il existe de nombreuses méthodes que nous pouvons utiliser pour le suivi des objets, telles que la segmentation des couleurs, différenciation des images, la correspondance des fonctionnalités, gaspillage d'apprentissage automatique, etc. Mais comme vous le savez, nous allons effectuer un suivi des objets basé sur la segmentation des couleurs. Passons maintenant à l'aspect pratique. Dans un premier temps, nous devons créer un objet vidéo pour capturer l'image. Pour capturer le cadre, nous allons utiliser notre webcam. Ici, je vais taper un nom de variable, CAP, Assign W et ici nous devons utiliser une méthode appelée capture vidéo. Cv point Video a capturé celui-ci. Ensuite, à l'intérieur des robes rondes, nous devons passer la source Z. Ensuite, je vais définir une fonction vide Pourquoi avons-nous besoin d'une fonction vide ? Parce que nous allons créer une barre de suivi en l'utilisant et pour créer cette barre de suivi, nous devons renvoyer une fonction vide. Qui ne va rien rendre ? Ici, je vais taper Dave et le nom de notre fonction n'est rien. Rien Dans les robes rondes, je vais passer un paramètre normal appelé X et dans la fonction, Hemo type pass En gros, ça ne rapportera rien. Ensuite, en utilisant cette fonction vide, nous allons créer une barre de suivi. Mais avant de créer une barre de suivi, nous devons définir le nom de la barre de piste. Ici, je vais taper V à deux points nommés Window. Ici, je vais utiliser une méthode appelée name Window named Window, et nous devons donner un nom à cette fenêtre. Pour notre fenêtre Tug bar, je vais maintenant taper tracking Je vais créer six barres de suivi parce que nous devons saisir saturation de teinte supérieure et nous devons également saisir la valeur de saturation de teinte inférieure Créons notre première barre de suivi. Ici, je vais taper C à deux points, créer une barre de suivi. Cette fonction. Ensuite, à l'intérieur des cuivres ronds , nous devons d'abord créer une barre de suivi pour la valeur inférieure de Hu Ici, je vais utiliser l'abréviation de Hu H. Après avoir créé le nom de la barre de suivi, nous devons transmettre le nom de la fenêtre. Dans quelle fenêtre, nous voulons afficher la barre de suivi. À l'intérieur des codes doubles, je vais transmettre ce suivi des noms de fenêtres. Ensuite, nous devons transmettre une valeur. Ici, nous devons transmettre la valeur inférieure , appelée zéro. Ensuite, nous devons transmettre la valeur la plus élevée et pour la valeur la plus élevée, je vais passer 255. Enfin, nous devons transmettre une fonction. Cette fonction ne retournera rien, donc je vais utiliser cette fonction, rien. Je veux juste copier le nom de la fonction et le mettre ici. Je ne vais pas définir de valeur par défaut pour notre barre de suivi car nous allons la définir minutieusement. Ensuite, je vais dupliquer cette ligne et cette fois je vais changer le nom de cette barre de suivi, qui est As. As signifie une saturation plus faible. Ensuite, je le duplique A et cette fois je vais le nommer L V, valeur inférieure. Ces trois barres de suivi représentent la valeur limite inférieure. Nous devons maintenant transmettre la valeur limite supérieure. Je vais dupliquer les trois lignes en entier. Nos trois derniers mots déclencheurs indiquent donc une valeur plus élevée, une teinte plus élevée et syn saturation plus élevée et le dernier est une onde plus élevée Nous devons maintenant exécuter une boucle infinie pour traiter en continu l'image vidéo. Pour cela, nous allons utiliser la boucle While. Ici, je vais taper YT puis dans cet illoop, je vais utiliser la méthode de lecture La méthode de lecture capture chaque image de la webcam pour stocker la valeur de capture et la valeur Bullen, je vais déclarer un total de deux variables abord, je vais déclarer B, qui va stocker la valeur booléenne, puis je vais déclarer une autre valeur appelée frame, frame equal to cap point read method Ensuite, après avoir lu tout le cadre de couleur, nous devons convertir le cadre de couleur en HSV Comme vous le savez, par défaut, couleur OpenCbuse BGR. Nous devons le convertir au format couleur HSB. Je vais très bien le déclarer Hs V égal à V deux, point, couleur CVD Ensuite, à l'intérieur des robes rondes, je vais passer le cadre. Dans un premier temps, nous devons transmettre la source de l'image. Je vais passer le frame variable frame. Ensuite, je vais le convertir en CV à deux points, couleur, en trait de soulignement, et je vais le convertir en BG HSV Recherchez GR to HSV. Celui-ci. Ensuite, nous devons obtenir la valeur HSV à partir de ces barres de suivi. Pour cela, nous devons déclarer différentes variables pour stocker la valeur de la barre de suivi. Donc, pour la partie inférieure, je vais taper underscoe H. Pour récupérer les données de cette barre de suivi, nous devons utiliser une méthode appelée gate track bar pause Je vais attacher le CV à deux points, à la barre de suivi, à faire une pause, celui-ci, puis à l'intérieur des presses rondes, à l'intérieur des codes doubles, nous devons d' abord transmettre le nom de l'interdiction de piste. À partir de quelle barre de suivi, je veux récupérer le, qui est H, H. Ensuite, nous devons définir le nom de la fenêtre, et le nom de notre fenêtre est suivi. Je vais utiliser le nom de cette fenêtre, tracking. Je copie le nom de la fenêtre et à l'intérieur des codes doubles, je vais le coller ici. la même manière, nous devons créer cinq autres variables pour obtenir la valeur de la barre de suivi. Je duplique cette ligne. Cette fois, je vais extraire la valeur de AS. Il tape un trait de soulignement est également un échange, le nom de bande de la piste L De la même manière, je vais tout créer. Celui-ci est pour V, et je vais changer le nom, V. Ensuite, je duplique ces trois lignes et je vais faire en sorte que celle-ci soit HH H Underscoeh C'est pour une valeur U élevée. suivant est pour une valeur de saturation élevée, HH le dernier pour HV Également pour modifier la piste, mais son nom, qui est H V. Ces lignes reprennent donc la position actuelle des barres de piste HSV, qui représentent les limites inférieure et supérieure de la plage de couleurs HSV Nous allons l'utiliser pour le masquage. Ensuite, nous devons créer un tableau de limites HSV inférieur et supérieur. Pour créer ces tableaux, je vais déclarer une variable L underscore B. Elle représente la borne inférieure y pour créer ce tableau de limites inférieures, nous allons utiliser le tableau de points NumPi p, Is the rounds, ici je vais passer toutes les valeurs de limite inférieure Lunde H, de soulignement a et de soulignement V. De la même manière, nous devons créer une valeur et de soulignement V. De la même manière, nous devons créer une la même manière, nous devons créer Je duplique cette ligne et je vais changer le nom de la variable. U UV représente la valeur limite supérieure. Ici, échangez également le nom des variables. Je vais y arriver, HH. HH représente une valeur plus élevée Hs HH signifie une saturation plus élevée, un U plus élevé, une saturation plus élevée et une valeur plus élevée Ensuite, nous devons créer un masque en utilisant la valeur limite inférieure et la valeur limite supérieure. Pour créer ce masque, nous allons utiliser la méthode in range. C'est la partie la plus importante de cette vidéo. Dans un premier temps, je vais déclarer une variable appelée mask égale à CV two.in range math boot in Ensuite, à l'intérieur des presses rondes , nous devons d' abord passer la source. En tant que source, je vais passer cette variable HSV. Alors attachez HSV. Ensuite, nous devons transmettre la valeur de la limite inférieure. Comme vous pouvez le constater, nous stockons la valeur de la limite inférieure à l'aide de cette variable, soulignement B, borne inférieure L souligne B. Nous devons également transmettre la valeur de la limite supérieure Et nous représentons la valeur du perbund en utilisant le trait de soulignement, B, c'est tout Ici, nous créons un masque à l'aide d'une seule fonction. Dans la fonction utilisée pour créer un masque basé sur les valeurs de couleur de l'espace colorimétrique HSV Dans un premier temps, nous passons à côté de l'espace colorimétrique HSV. Il s'agit d'une image de l'espace colorimétrique HSV. Nous convertissons une image BGR en HSV ici. Je passe cette variable. Nous passons d'abord un tableau de valeurs de limite inférieure, puis nous passons un tableau de limites supérieures. Maintenant, la fonction bit inne convertit ces valeurs en une image binaire, et nous avons stocké cette image binaire dans la variable mas Comme vous le savez, une image binaire lui donne une valeur totale de deux. Alors que zéro représente le noir et 255 et 255 représentent le blanc. Maintenant, ce masque met en évidence la raison dans le cadre qui correspond à la gamme de couleurs spécifiée. Supposons que vous sélectionniez une marque de piste innu de couleur bleue, alors elle n'affichera que la partie bleue dans into Nous devons maintenant appliquer ce masque avec les BTI et l'opérateur. Ici, je ne vais pas expliquer en profondeur le fonctionnement des garçons et de l'opérateur. Pour appliquer le masque sur Bitwise et sur l'opérateur, je vais déclarer une variable RES Rs égal à, nous devons utiliser BTI et le sous-type CV deux points B deux fois et opérer Ensuite, à l'intérieur des cuivres ronds, nous devons d'abord passer la première source, qui est le cadre en tant que deuxième source, je vais passer un autre cadre variable Dans notre première vidéo, nous passons l'image d'origine et dans notre deuxième vidéo, nous passons également l'image d'origine, car puisque nous masquons la largeur d'origine elle-même, nous devons maintenant transmettre la variable de masque Masque d'hémotype égal au masque. Cela crée une sortie qui montre uniquement la partie du cadre d'origine correspondant à la gamme de couleurs spécifiée. En gros, vous allez isoler l'objet en fonction de sa couleur. Je vais maintenant afficher la vidéo et la sortie du masque, ainsi que la variable ras. Ici, je vais utiliser IMSO Mathod une émission de messagerie instantanée à deux points de type V. Ensuite, à l'intérieur des presses rondes, je vais d'abord passer le nom de la fenêtre dans laquelle je veux afficher le cadre. Le nom de notre fenêtre est frame. Ensuite, je vais passer le cadre variable. En gros, cette fenêtre va nous montrer les images originales, les images colorées, les images en couleur de Bier. Ensuite, je vais vous montrer la vidéo du masque. Je duplique cette ligne et remplace le cadre par un masque. Enfin, je vais afficher cette variable de résolution, cette séquence, cette intersection en amont avec l'opérateur Bt Donc ici d'abord, je vais changer le nom de la fenêtre Rs. De plus, je vais remplacer ce masque variable par ReS et je vais définir ce fichier. Nous devons maintenant définir la condition IP pour rompre la boucle en utilisant la méthode Wetey Ici, je vais taper E condition I CV Key Wet Key à deux points. Dans le processus du tour, je vais attendre 25 millisecondes et zéro x FF est égal à deux égal à ORD et zéro x FF est égal à deux égal à ORD À l'intérieur, il est écrit que si je fais éloge du petit Q sur notre clavier, alors je veux briser la boucle Pause. C'est ça. Après cela, nous devons publier la capture. Méthode de déverrouillage du capuchon. Cela va publier notre capture vidéo. Également pour détruire toutes les fenêtres. V deux, point, détruisez toutes les fenêtres. C'est donc terminé, mais là j'ai commis une stupide erreur. Comme vous pouvez le voir, il s'agit d'un tableau, nous devons donc transmettre cette vidéo à l'intérieur de la base carrée. Ici, chez Square Basis. Maintenant, je vais redéfinir ce fichier et exécuter ce code. Maintenant, exécutons le code dans notre terminal. Après avoir cliqué sur le bouton Exécuter, nous devons attendre un certain temps pour démarrer notre webcam. Comme vous pouvez le voir, elle doit ouvrir notre fenêtre. Ici, nous devons indiquer quatre fenêtres. Le premier est pour la barre de suivi, second pour le cadre d'origine et le troisième pour le masque. C'est pour le masque Bis et je vais placer toutes les fenêtres côte à côte afin que nous puissions comparer le résultat très facilement. Comme vous pouvez le voir, c'est le bouchon de bouteille unicolore que je vais utiliser pour me séparer du suivi des objets. Ici, j'utilise un bouchon de bouteille variant en bleu uni. Vous pouvez utiliser n'importe quel objet de couleur unie, et je vais faire correspondre cette couleur à l'aide de notre barre de suivi. Et maintenant, nous devons jouer avec cette barre de suivi pour qu'elle corresponde à la couleur du bouchon de la bouteille. Nous devons jouer avec la valeur six. Dans un premier temps, je vais augmenter la valeur la plus élevée. Ensuite, je vais augmenter la valeur de saturation élevée. Nous devons ajuster ces barres pour obtenir le résultat parfait. Comme vous le remarquez, lorsque je modifie les valeurs, cela réduit le bruit et j' essaie de me concentrer sur le bouchon de notre bouteille. Je vais d'abord approfondir ce processus pour obtenir le résultat parfait. Maintenant, ces coordonnées me donnent presque le résultat parfait. Vous pouvez maintenant le voir suivre avec succès notre objet. Il peut suivre notre bouchon de bouteille de couleur bleue. Dans notre fenêtre cadre, vous pouvez voir les images originales et dans notre fenêtre de masque, vous pouvez voir ici les images de l'opérateur BtS Ici, le blanc représente le bouchon du flacon et la couleur noire représente la zone non sélectionnée. Mais dans notre troisième fenêtre ReaS, vous pouvez voir ici l'objet en couleur réel Ici, vous pouvez voir le bouchon exact du flacon. Sans ce bouchon, vous ne pouvez rien voir ici car il ne suit que la segmentation des couleurs à partir de cette fenêtre. Maintenant, nous allons fermer la fenêtre et revenons au programme. C'est ainsi que nous pouvons effectuer le suivi des objets en fonction de la segmentation des couleurs. J'espère que vous comprenez maintenant comment nous pouvons le créer en suivant à peu près le même processus, nous pouvons créer Air Canvas avec. Nous allons en apprendre davantage à ce sujet dans notre prochain tutoriel. Ne t'inquiète pas pour ça. Merci d'avoir regardé cette vidéo. Restez à l'affût pour notre prochain tutoriel. 28. Importer des modules et configurer un objet mediapipe: C'est bon de vous revoir, les gars. Une fois de plus, je suis de retour avec un nouveau projet passionnant lié à OpenCV Et aujourd'hui, dans ce projet, nous allons créer Finger Counter, à l' aide du module Media Pipe. Maintenant, permettez-moi de vous montrer un exemple. Celui que nous allons créer. Donc, comme vous pouvez le voir, cela démarre notre caméra Web. Et maintenant je vais lever la main fermée. Comme vous pouvez le voir, il affiche maintenant zéro doigt et suit tous les doigts avec succès. Ici, vous pouvez voir tous les points de repère, et maintenant je vais étendre le doigt. Comme vous pouvez le voir sur votre écran, il imprime maintenant cinq doigts. Vous pouvez remarquer qu'il suit toutes les articulations des doigts et les dents. Et si je ferme mon pouce, vous pouvez maintenant le voir imprimer quatre doigts. Et si je le relève, encore une fois, il en imprime cinq. Et si je bouge mon index, comme vous pouvez le voir, il imprime maintenant quatre doigts. De la même manière, il suit tous les doigts. Il compte tous les doigts et suit également toutes les coordonnées des doigts. C'est ainsi que fonctionne notre compteur d' empreintes digitales. Enfin, nous sommes dans mon éditeur de code Visual Studio, et comme vous pouvez le voir, ici je crée déjà un fichier Python main point pi. Dans un premier temps, je vais importer notre module principal, le CV deux. Donc, pour taper, importez le CV deux. Ensuite, nous devons installer un module important, qui est Media Pipe. Pour installer le media Pipe, nous devons taper cette commande. Pour installer OpenCB Python Media Pipe, vous devez appuyer sur Entrée Comme vous pouvez le constater, l'exigence est déjà satisfaite. J'ai déjà téléchargé ce module, mais vous devez terminer le processus de téléchargement. Revenons ensuite au point principal Pi Pi et cette fois, vous devez importer du media pipe. Le module Media Pipe. Donc, pour taper Import Media pipe en tant que MP. Maintenant, vous avez peut-être une question : qu'est-ce que Media Pipe ? Media Pipe est un puissant framework open source de Google, conçu pour créer un pipeline d'apprentissage automatique multimodèle Il fournit une collection de bibliothèques multiplateformes et modèles pré-entraînés pour la mise en œuvre tâches de vision par ordinateur et d'apprentissage automatique en temps réel. Et si je parle de son usage courant, il est utilisé pour la détection de phase. Il peut détecter la phase et suivre les phases en temps réel. Ensuite, nous pouvons l'utiliser pour l'estimation de la pose. Il peut identifier la pose du corps humain, ce qui est utile pour les applications de fitness. Nous pouvons également l'utiliser pour le suivi manuel. En l'utilisant, nous pouvons suivre les mouvements de la main et reconnaître le geste. Nous pouvons également l'utiliser pour détection d'objets en trois D pour la réalité argumentée Mais dans ce tutoriel, nous allons utiliser le suivi manuel. Ce module est très léger et rapide. En outre, il fonctionne sur une variété d'appareils, y compris les appareils à faible consommation. Maintenant, après avoir saisi nos bibliothèques, nous devons initialiser les mains du canal multimédia Pour cela, je vais d'abord déclarer une variable et le nom de notre variable est MP, underscopean, media pp hand, media pipe hand égal à PTT, solution à partir d'ici, je veux appeler hands Cela va sortir de la solution pour les mains du support, puis les mains égales à main punch P undercode Je vais exécuter une méthode appelée Ensuite, au cours des rondes , nous devons passer certains paramètres tels que le mode d'image statique, nombre maximum de mains et le niveau de confiance de détection minimal. abord, je vais passer une main d'image statique, soulignement, une image, soulignement, un mode, un mode image statique égal à, et je vais le rendre faux Ensuite, je vais passer le nombre maximum de mains. maximum, numéro de sous-titrage, NUM, traits de soulignement, nombre maximum de mains, égal à, pour l'instant, je vais en passer Ne t'inquiète pas Je vais l'expliquer plus tard. Enfin, je vais atteindre le niveau de confiance minimum en matière de détection. Donc, le type, la moyenne, le soulignement, détection soulignent la confiance, égal à 0,7 pour Hermon. Comme vous pouvez le voir, nous exécutons ici une méthode appelée hands, et comme premier paramètre, nous passons le mode image statique. Nous l'avons fait tomber. Qu'est-ce que cela signifie ? Cela signifie qu'il est optimisé pour la vidéo, qu'il détecte la main uniquement dans la première image et qu'il suit dans l'image suivante. Ensuite, au deuxième paramètre, nous fixons la limite. Ici, nous fixons la limite du nombre de mains, et ici nous en dépassons une. Il limite la détection à une seule main. Enfin, comme vous pouvez le constater, Herro utilise un autre paramètre, la confiance de détection minimale Ici, nous définissons la confiance de détection minimale point zéro. Côté Is wing, cela définit le seuil de confiance de détection. Des seuils plus bas peuvent entraîner des faux positifs. Ensuite, nous devons définir le dessin MP. C'est un utilitaire pour dessiner un point de repère et une connexion sur les mains détectées. Laisse-moi te montrer. Ici, tapez P, un dessin de soulignement égal au type héros pt, une méthode appelée dessin par points en solution, Utes, outils soulignement Comme je vous l'ai dit, il s'agit d'un utilitaire permettant de tracer des repère et des connexions sur les mains détectées. Donc, en gros, dans cette section, Hero initialise Media Pipe Hand Ensuite, nous devons créer une fonction. Nous devons créer une fonction de comptage des doigts, et je ne vais pas le faire dans cette vidéo. Voilà pour cette vidéo. Dans la vidéo suivante, nous allons définir une fonction. Merci donc d' avoir regardé cette vidéo, Sta tune pour notre prochain studio. 29. Créer une fonction de compteur à doigts: C'est bon de vous voir, les gars. Il s'agit d'une autre partie de ce projet. Et ici, nous allons définir une fonction capable de compter nos doigts. De plus, il peut compter nos pouces. Dans notre précédent tutoriel, nous avons initialisé la main Media Pipe, et ici nous allons créer une fonction Nous allons définir une fonction appelée D Dave. Notre nom de fonction est count finger. Souligner le doigt. Comptez les doigts, et à l'intérieur la cavité périphérique, vous trouverez un argument, à savoir un point de repère à la main, un point de repère de soulignement. Ici, nous allons transmettre les repères de main détectés à cette fonction. Ensuite, dans cette fonction, je vais définir une liste, une liste vide, et le nom de notre liste sera marqué du doigt. Les doigts sont égaux à une liste vide. Cette liste va enregistrer l'état de chaque doigt. Et maintenant, nous devons définir le point de repère. Pour cela, je vais très bien appeler Landmarks, Landmarks equal to hand, Landmarks Landmark. repère est une liste de 21 points, W contiendra les coordonnées X , les coordonnées Y et les coordonnées z ? Il s'agit d'une liste de 21 points correspondant aux différentes parties de la main. Comme vous pouvez le voir sur cette image, il s'agit des coordonnées du point de repère , fournies par Media Pipe. C'est ainsi que Media Pipe lit nos mains. Comme vous pouvez le voir, c' est notre pouce, c'est notre index, c'est notre majeur. C'est l'annulaire, et c'est le petit doigt Comme vous pouvez le constater, il peut détecter toutes les articulations de notre doigt. Il peut également détecter le bout de ce doigt et chacune des coordonnées définies par un nombre. Nous allons utiliser ces chiffres et les coordonnées XX et YXS pour compter les doigts de notre Revenons-en au code is studio. Il peut donc reconnaître 21 points de notre main. Nous devons maintenant détecter le pouce. Nous devons vérifier les coordonnées X pour l'orientation de la main gauche et de la main droite. Pour cela, HemrotypFingers, méthode point append. À l'intérieur des robes rondes, repères d' hémotypes et je veux que ce soit à partir de ce point de repère, je veux être le quatrième index, Tt, je veux dépasser les coordonnées X et moins que les points de repère à l'intérieur du carré ss Amel passe l'index à trois Comme je vous l'ai dit, notre main s' est divisée en 21 points de repère. Comme je vous l'ai dit, un point de repère est une liste de 21 points chaque point représente une partie spécifique de notre main et chaque trou correspond à trois coordonnées. coordonnée X xs, le codent XS et la coordonnée Z xs, et l'indice 4 du point de repère représente le bout du pouce selon le tube multimédia, et le point de repère 3 représente l'articulation du pouce située près de l'extrémité. Il s'agit la coordonnée X du bout du pouce et de l'articulation Parlons maintenant de la logique qui le sous-tend ? Pourquoi utiliser une valeur inférieure à la valeur sinusoïdale ? Pourquoi choisir Landmark quatre points x moins que Landmark trois points X ? Cela signifie que si les coordonnées du bout du pouce sont inférieures à celles de l'articulation, cela signifie que le pouce est étendu vers l'extérieur Cela est généralement vrai pour la main gauche lorsque le pouce est étendu et pour la main droite, cette logique fonctionne car le cadre est retourné horizontalement Et cela a permis de garantir que les coordonnées X sont constantes pour la détection. Maintenant que j'ai compris la logique, nous nous sommes peut-être demandé pourquoi nous devions l' ajouter à cette liste de doigts Ici, les stylos à pois enregistrent le résultat, vrai ou faux. Si la condition est vraie, son pouce principal est étendu vers l'extérieur En cas d'échec, le pouce n'est pas étendu. Ce code est donc destiné à la détection du pouce. Maintenant, nous devons détecter d'autres doigts. Pour cela, je vais utiliser quatre boucles pour Pep à l'intérieur du carré ss, je vais vérifier les coordonnées Y pour ces 812, 16, 20 Ensuite, à l'intérieur de ces quatre boucles, nous devons maintenant comprendre les quatre boucles. Qu'est-ce que cela signifie ? Pour un pourboire en 8, 12, 16 et 20 ans. Cela signifie qu'il itère par le bout de l'index, qui est représenté par le bout de huit doigts du milieu, représenté par 12, puis par le bout de l'annulaire, représenté par 16, et par le bout du petit doigt , représenté par 20 Ensuite, à l'intérieur de ces quatre boucles, doigts d' hématite apparaissent à l'intérieur de la résine ronde, marquent à l'intérieur de la résine carrée, P, et je veux accéder aux coordonnées Y Y. Moins que Landmark, à l'intérieur de la résine carrée, PP moins deux, je veux accéder aux coordonnées Y. Maintenant, la question qui se pose est la suivante : quelle est la signification de cette condition ? Quel est le sens de cette logique ? En gros, il s'agit de vérifier notre doigt antérieur est étendu ou non. Et Landmar TP, reportez-vous au bout du doigt actuel. Point de repère YX, référence le bout du doigt actuel et pointe du point de repère moins deux points YxSRFer l' articulation de base du Essayons de comprendre avec une image réelle. Comme vous pouvez le constater, c'est ainsi que les médias observent notre main. Comme vous pouvez le voir, huit est le tif de l'index et 12 est le bout du majeur, 16 est le tif de l'annulaire et 20 est le bout du petit doigt Et si on en perd deux à partir du point de pointe, alors vous pouvez voir le joint. Ici, vous pouvez voir le joint de base. Si on en retire deux sur huit, on obtient six. Alors six est l'articulation de base de cet index. la même manière, nous pouvons identifier d'autres articulations basées sur les doigts , dix, 14, 18. Il s'agit donc des coordonnées Y de la pointe et des coordonnées Y de l'articulation de base de nos doigts. Et ici, nous comparons les coordonnées Y de la pointe avec le joint de base. Et si le bout est plus haut, le doigt est considéré comme étendu. Et si le bout est plus bas, le doigt est considéré comme plié. Et notre méthode d'ajout va ajouter le vrai faux résultat pour chaque doigt de cette liste de doigts dans cette liste de doigts vide Si la condition est vraie, cela signifie que le doigt est étendu, et s'il tombe, cela signifie que le doigt est plié. Nous avons donc maintenant la liste qui permet d'identifier le doigt étendu et le doigt plié. Maintenant, nous devons compter la liste. Pour cela, en dehors de ces quatre boucles, son type revient, il faut compter la liste des doigts, rien d'autre. Doigt, point des doigts, méthode de comptage, comptez. Et à l'intérieur des runbs, nous ne devons compter que les vraies valeurs, pas les fausses valeurs Alors là, je tape, c'est vrai. C'est ça. Passons maintenant à cette section E. Et côte à côte, comme vous pouvez le voir, j'ouvre mon éditeur de code Visual Studio et cette image pour comprendre les dates et les points de repère Ici, d'abord, nous définissons une fonction dont le nom est count finger, et elle prendra hand landmark comme argument. Ensuite, nous créons ici une liste EmptyList de doigts. Il va stocker la valeur en deux ou en faux ? Vrai signifie que le doigt est étendu et faux signifie que le doigt n'est pas étendu. Ensuite, nous accédons au point de repère. Landmark est une liste de 21 points, et comme vous pouvez le voir, ce sont des points fournis par le média Pi et chacun des points contient au total trois coordonnées. XxS, YxS et ZxS. Dans la partie suivante, nous effaçons le pouce en utilisant cette méthode d'ajout. Comme vous pouvez le voir, c'est l'image du pouce de la main droite. Et c'est le chiffre historique du pouce, qui est quatre. Et à partir de ce pouce, nous extrayons ici les x de cette valeur numérique. Ensuite, nous accédons à l'articulation du pouce, qui est le point de repère trois, et à partir de ce point de repère trois, nous extrayons à nouveau la valeur xs. Et si la condition est vraie, cela signifie que notre pouce est étendu. Si la valeur du point de repère quatre S est inférieure à la valeur du point de repère trois x, cela signifie que la condition est vraie. Cela signifie que le pouce est étendu. Si vous remarquez que la distance entre la limite de ce point de repère quatre est d'environ 20 pixels et la distance entre la limite deux, le repère trois est de 60 pixels ou 80 pixels . La valeur du point de repère trois X est supérieure à celle du point de repère quatre, je veux dire que le pouce est étendu Si nous croisons le pouce, dix, le point de repère quatre sera supérieur au point de repère trois. Je veux dire que le pouce est plié. Ici, nous comparons le bout du pouce à l'articulation basée sur le pouce. De même pour les autres doigts, dans un premier temps, en utilisant cette boucle, nous accédons à tous les bouts. Dans cette liste, nous passons ici le bout de l'index, le bout du majeur, le bout de l' annulaire et le bout du petit doigt Ensuite, nous extrayons les coordonnées Y de cette pointe, puis nous les comparons avec la direction Ys de cette façon. Pour notre pouce, nous comparons avec la direction des X. Mais cette fois, nous comparons avec la direction de Yx. Si la valeur de jointure de la base du pouce est supérieure à celle du pouce, la condition est vraie. Et il va ajouter la vraie valeur à cette liste. Ensuite, nous comptons les vraies valeurs. Combien de valeurs réelles avons-nous dans cette seule liste ? Supposons que nous ayons au total cinq valeurs vraies dans cette liste selon cette image. Ensuite, il en retournera cinq. Il va compter toutes les vraies valeurs. Si l'une des conditions est fausse, elle ne comptera pas la fausse valeur, alors elle en renverra quatre. C'est ainsi que notre fonction va fonctionner. Voilà pour cette vidéo. Dans la partie suivante, nous allons commencer notre boucle principale. Nous allons lire le cadre. Merci donc d' avoir regardé cette vidéo Restez connectés pour la prochaine partie. 30. Créer la boucle principale et exécuter le projet: C'est bon de vous voir. Encore une fois, je suis de retour avec une autre vidéo en lien avec ce projet. Et dans cette vidéo, nous allons découvrir la boucle principale. Dans un premier temps, je vais ouvrir la webcam. Pour ouvrir la webcam, je vais d' abord déclarer une variable, et le nom de notre variable est CAP, CAP égal à cv point Méthode de capture vidéo. Capture vidéo. Ensuite, à l'intérieur des presses rondes, vous devez passer la source de la caméra. Je vais allumer mon appareil photo par défaut, donc je vais passer à zéro. Ici, je vais taper Y, le capuchon est ouvert, est ouvert. Ensuite, à l'intérieur de celui-ci, while oop , je vais d' abord exécuter la méthode de lecture point du capuchon est prêt. Comme vous le savez, méthode read va revenir à deux résultats, une valeur Bullen et le cadre d'origine, et le stocker dans un type de héros variable pour stocker le wollen. Je tape avec Virgule et pour stocker le cadre multiple, identique à la méthode de lecture Cabot Ensuite, une mutuelle sur une condition EP. Si ce n'est pas le cas, alors dans la condition IP, je veux rompre la boucle. Réveille-toi, c'est ça. Et maintenant, nous devons retourner le cadre horizontalement pour le lty e, pour le rétroviseur. HemtiFrame est donc égal à la méthode CV de retournement à deux points. Retourner. Ensuite, à l'intérieur des robes rondes, je vais passer le cadre et aussi le flip code. Et je vais le retourner horizontalement, donc je vais en passer un. Ensuite, nous devons convertir ce cadre Bier en couleur RGB. Pour cela, je vais déclarer une autre variable RGB under scope frame, égale à la couleur CVD à deux points de l'hémotype CV Celui-ci. Ensuite, à l'intérieur des robes rondes, il faut d' abord transmettre le fichier source, donc je vais passer le cadre, puis uniquement le code couleur. CV à deux points ici, je vais convertir la couleur, souligner le BGR en RGB, celui-ci Ici, nous convertissons ce cadre en BGR en algeb. Maintenant, après avoir converti ce cadre en couleur algèbre, nous devons traiter le Pour cela, nous devons exécuter la méthode process. Ici, je vais lier le résultat à mains égales , selon la méthode Do Process. Procédé. Ensuite, à l'intérieur de cette rondeur, vous devez passer le cadre RGB. RGB, sans soulignement. Ensuite, ici, je vais exécuter I condition. Si le résultat est obtenu à plusieurs mains, tapez SO, multitrait de soulignement, main, points Ensuite, insérez cette condition, je veux exécuter une boucle à quatre. Il tape quatre, main, repère dans le résultat, points, points, points de repère à plusieurs mains Je vais donc copier cette ligne, des points de repère à plusieurs mains. Encore un festif. Ensuite, à l'intérieur de ces quatre boucles, nous devons dessiner les points de repère. En gros, je parle de ces points de repère. Nous devons tracer ces repères. Nous vérifions ici les mains détectées dans la variable de résultat. Il contient les repères de main détectés , écrits par le module Media Pipe Hands. Si une main est détectée, contiendra une liste des objets repérés par la main. Si aucune main n'est détectée, cette valeur est nulle, puis nous parcourons les mains détectées en utilisant « for for hand » pour obtenir des repères à plusieurs mains Comme vous le savez, chaque objet contient 21 points de repère tels que le pouce, le TP, bout de l' index, etc., et chacune des coordonnées du point de repère enregistre les valeurs XX et ZxS Et maintenant, nous devons dessiner un point de repère dans notre main. Pour cela, ici je vais taper dans ce qui suit, type amino, trait soulignement MP et dessin de soulignement NP, point, ici, je vais dessiner Donc je suis du genre à dessiner un point de soulignement. Dessiner un point de repère est le fait que le arrondisseur dit, d'abord , je vais fournir le cadre, dans lequel je veux dessiner le point de repère Alors passez le cadre. Ensuite, nous devons fournir les repères de la main, la variable de repère de la main et les points de repère. Cette main variable est essentiellement l'objet principal, qui va cumuler 21 points Ensuite, nous devons définir quels points sont connectés, tels que les jointures et les pointes. Pour cela, je vais taper MP underscore. Par conséquent, dessiner les points de repère en tenant également compte des doigts Pour cela, je vais déclarer un autre nombre variable de soulignements à doigts Nombre de doigts égal à, je vais taper une méthode, compter les doigts. Est-ce que le rond dit, ici je vais taper une marque de main emblématique, celle-ci En gros, j' appelle ici la fonction, que j'ai déjà créée, celle-ci, compter les doigts. Et comme vous pouvez le voir en paramètre, nous devons passer des points de repère. Nous appelons donc cette fonction. Maintenant, après avoir compté les doigts, nous devons afficher le nombre de doigts. Pour cela, ici, je vais utiliser la méthode put text. Tapez donc CV à deux points, mettez du texte. Mettez du texte. Ensuite, à l'intérieur de la chemise, je vais d'abord passer le cadre avec l'image source Cadre, virgule, et ici je vais utiliser la méthode des chaînes. Ensuite, dans les couches doubles, je vais taper des doigts, points dans le Cibass, je vais passer cette variable, doigts. Celui-ci. Ensuite, nous devons définir la position de ce texte. Donc, dans la presse ronde, je vais passer 1070. Ensuite, vous devez définir le style de police. Je vais donc lier CV à la police hoch simplex, underscoeh simplex, underscoeh simplex Ensuite, vous devez définir la taille de police, je vais donc en passer deux. Il s'agit de la valeur de l'échelle de police. Ensuite, nous devons définir la couleur de police. Donc, comme couleur de police, je vais passer la couleur bleue. Nous devons le transmettre au format BGR. Tout d'abord, je vais taper 2550, zéro. Après cela, vous devez transmettre l'épaisseur de la police. Pour ce qui est de l'épaisseur du téléphone, je vais passer à deux. Nous avons donc réussi à mettre ce texte dans ce cadre. Après cela, nous devons afficher ce cadre. Pour cela, nous devons exécuter, je suis ShomthodoSide Donc ici, en dehors de la condition IP, je vais taper CV deux points, CV deux points, je suis Shoathod, je suis show Ensuite, pendant les rondes, dans le double parcours, je vais taper, en comptant les doigts. Dans le double cours, nous devons d'abord définir le nom de la fenêtre et le nombre notre fenêtre est compté Ensuite, nous devons transmettre le nom du cadre cadre que je veux afficher est le cadre. Nous devons également briser la boucle en utilisant la méthode Weitey. Je tape I, touche CV à deux points mouillée. À l'intérieur des pièces rondes, je vais attendre une milliseconde et zéro X F égal à ORD à l'intérieur des rondresses Dans le cours unique, je vais réussir Q. Ensuite, dans cette condition IP, je veux casser le luth, le break Ensuite, je vais libérer les personnes capturées. Déclencheur Cap Dot. Nous devons également détruire toutes les fenêtres. Type de somme, CV à deux points, détruisez toutes les fenêtres. Celui-ci. Et avant d'exécuter ce code, laissez-moi vous montrer quelque chose. Ici, nous devons lui faire dessiner des points de soulignement. Nous devons ajouter un, également dans une de type mphand point Il va définir quels points sont connectés, comme les joints et les pointes, etc. Ensuite, vous pouvez définir ce fichier et exécuter ce code dans votre terminal. Et si vous exécutez ce code dans votre terminal, au début, il affichera un avertissement. Cet avertissement va alors démarrer votre webcam. Tu dois attendre un certain temps. Comme vous pouvez le voir, cela démarre notre caméra Web. Maintenant, je vais lever la main fermée. Comme vous pouvez le voir, il affiche maintenant zéro doigt et suit tous les doigts avec succès. Ici, vous pouvez voir tous les points de repère et maintenant je vais étendre le doigt. Comme vous pouvez le voir sur votre écran, il imprime maintenant cinq doigts. Vous pouvez remarquer qu'il suit toutes les articulations des doigts et les dents. Et si je ferme mon pouce, vous pouvez maintenant le voir imprimer quatre doigts. Si je le relève, encore une fois, il en imprime cinq. Et si je bouge mon index, comme vous pouvez le voir, il imprime maintenant quatre doigts. De la même manière, il suit tous les doigts. Il compte tous les doigts et suit également toutes les coordonnées des doigts. C'est ainsi que fonctionne notre compteur de doigts, et si vous voulez fermer ce programme, vous devez faire l'éloge du petit Q votre clavier et cela va briser la boucle. J'espère que ce projet vous plaira. Merci d'avoir visionné cette vidéo et restez à l'affût de notre prochain projet.