Toile aérienne utilisant openCV | Jayanta Sarkar | Skillshare
Recherche

Vitesse de lecture


1.0x


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

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

      1:09

    • 2.

      Aperçu du projet

      3:10

    • 3.

      Créer une barre de piste de couleur dans openCV

      6:24

    • 4.

      Point de coloriage et mise en place du dessin

      5:25

    • 5.

      Préparer la toile

      8:57

    • 6.

      Configuration de la caméra et boucle principale

      13:47

    • 7.

      Identifier le pointeur en utilisant un masque

      7:14

    • 8.

      Trouver le contour du pointeur

      11:48

    • 9.

      Manipuler les boutons

      15:19

    • 10.

      Tracez des lignes pour la couleur du trait

      10:23

  • --
  • 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.

3

apprenants

--

projet

À propos de ce cours

Vous avez toujours voulu dessiner dans votre imagination en agitant simplement votre doigt en l'air ? Dans cet article, nous allons apprendre à créer une toile aérienne sur laquelle vous pouvez dessiner n'importe quoi en capturant simplement le mouvement d'un marqueur de couleur avec un appareil photo. Ici, un objet coloré au bout du doigt est utilisé comme marqueur.
Nous utiliserons les techniques de vision par ordinateur d'OpenCV pour créer ce projet. Le langage préféré est Python en raison de ses bibliothèques exhaustives et de sa syntaxe facile à utiliser, mais en comprenant les bases, il peut être implémenté dans n'importe quel langage pris en charge par OpenCV.
Ici, la détection et le suivi des couleurs sont utilisés afin d'atteindre l'objectif. Le marqueur de couleur est détecté et un masque est produit. Il comprend les étapes suivantes des opérations morphologiques sur le masque produit, à savoir l'érosion et la dilatation. L'érosion réduit les impuretés présentes dans le masque et la dilatation restaure davantage le masque principal érodé.

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: Aujourd'hui, nous allons le créer. Nous allons dessiner n'importe quoi en l'air à l'aide de notre webcam. Comme vous pouvez le voir dans cet exemple, nous dessinons ici une ligne à l'aide d'un pointeur dans les airs Ici, nous dessinons une ligne dans les airs de différentes couleurs, telles que le bleu, le vert, le rouge, le jaune Ce projet est connu sous le nom de dessin de webcam en direct à l'aide d'OpenCV Ici, nous utilisons la méthode de suivi des objets pour dessiner n'importe quoi dans les airs à l'aide d'OpenCV Notre programme prend l'entrée vidéo de la webcam et suit l' objet que nous déplaçons. Après avoir identifié l'objet, il créera des contios avec précision Ensuite, il peindra tous vos dessins sur l'écran de sortie. Je m'appelle Jonathan Sarkar. Je suis développeur Web Fostek, programmeur Python et instructeur en ligne Et je vais vous guider tout au long de ce projet. Comment pouvons-nous créer ce projet en utilisant Python et Opens ? Si vous connaissez le langage de programmation Python, nous pouvons commencer notre voyage ensemble. Merci beaucoup 2. Aperçu du projet: Ici, nous allons utiliser un traceur. Nous allons utiliser n'importe quel traceur coloré. Mais pour ce tutoriel, je vais utiliser un tracker de couleur bleue. Vous pouvez également utiliser une couleur rouge. Dans ce projet, vous pouvez dessiner des lignes de différentes couleurs. Pour notre projet, nous allons utiliser au total quatre couleurs : bleu, vert, rouge et jaune. Tu peux utiliser bien plus que ça. Permettez-moi donc de vous montrer une démonstration la façon dont notre projet va fonctionner. Après avoir appuyé sur le bouton Exécuter, comme vous pouvez le voir, la fenêtre du détecteur de couleur s'affiche d'abord . À partir de là, à l'aide de ce curseur, vous pouvez cibler n'importe quelle couleur Et comme vous le savez, par défaut, nous ciblons la couleur bleue, et nous devons attendre un certain temps pour démarrer la webcam. Vous pouvez maintenant voir ici qu'il a ouvert au total trois fenêtres, une fenêtre en direct, une fenêtre de peinture et une fenêtre de masque. Et je vais aligner ces fenêtres côte à côte. Et maintenant je vais commencer à dessiner. Ici, je prends déjà un pointeur bleu et je le cache entre mon doigt. Maintenant, je vais commencer à dessiner en l'utilisant. Comme vous pouvez le voir, notre caméra suit notre marqueur et trace une ligne. Il commence à dessiner en bleu, et vous pouvez voir le dessin dans notre fenêtre de dessin en direct, vous pouvez également voir le même dessin dans notre fenêtre de peinture blanche et dans notre fenêtre de masque, vous pouvez voir le masque binaire dans notre fenêtre de masque, vous pouvez remarquer qu'il ne suit que le marqueur de couleur bleue. Il ne suit rien d'autre de cette vidéo. Maintenant, je vais masquer ce marqueur et commencer à dessiner à partir d'un point différent. Je vais commencer à dessiner à partir de cette position. Vous pouvez remarquer, encore une fois, qu'il a commencé à tracer le chemin à partir de cette position. De cette façon, vous pouvez tracer ligne différente à une position différente. Maintenant, laissez-moi vous montrer comment pouvons-nous changer de couleur ? Comment pouvons-nous changer la couleur de cette ligne de trait ? Pour cela, nous devons déplacer le pointeur sur le bouton de couleur. Au début, je vais déplacer ce pointeur sur le bouton de couleur verte et maintenant il sélectionne la couleur verte. Si je commence à dessiner, vous pouvez maintenant le voir dessiner la ligne avec des couleurs vertes. De même, si vous souhaitez changer de couleur, vous devez placer votre marqueur sur la couleur suivante. Pour l'instant, je vais sélectionner la couleur rouge. Maintenant, il va commencer à dessiner une ligne de trait de couleur rouge. De la même manière, vous pouvez sélectionner la couleur jaune. Il vous suffit de placer votre pointeur au-dessus du bouton jaune. Ensuite, vous pouvez commencer à dessiner en utilisant une ligne de couleur jaune. C'est ainsi que vous pouvez changer de couleur une par une. Si vous souhaitez effacer cette fenêtre, vous devez déplacer votre marqueur au-dessus du bouton Effacer. Comme vous pouvez le constater, après avoir déplacé ce marqueur au-dessus du bouton Effacer, la fenêtre est effacée. Encore une fois, vous pouvez commencer à dessiner dans ce canevas. Nous avons construit avec succès notre projet de dessin d'air. Et si vous voulez clôturer ce projet, vous devez faire l'éloge de Small Cube. Ça va fermer les fenêtres. C'est le projet que nous allons développer dans ce tutoriel et nous allons démarrer à partir de la prochaine vidéo Merci d'avoir regardé cette vidéo Sedue. 3. Créer une barre de piste de couleur dans openCV: Enfin, nous sommes dans l'éditeur de code de mon studio de recherche. Donc, comme vous pouvez le voir dans mon caractère de travail actuel, nous créons déjà un fichier Python, Min point pi Commençons donc par importer la bibliothèque. Dans un premier temps, je vais importer la bibliothèque NumPi. Importez NumPi en tant que N P. Il est utilisé pour les opérations numériques, y compris la création de métriques et de tableaux Ensuite, je vais importer le CV deux, notre module principal Importer le CV deux. Ici, je vais importer un autre module important connu sous le nom de DC et nous devons le saisir depuis le module de collection. Je vais taper à partir de la collection. Je souhaite importer le module take, DEQE. Il s'agit d'une double activation D à partir du module de collecte. Il est utilisé pour stocker des points afin de dessiner efficacement. Ensuite, nous devons créer les guerres de pistes pour le réglage des couleurs. Nous avons déjà découvert la barre de suivi dans nos projets précédents, je ne vais donc pas développer ce sujet en détail. Et comme vous le savez, pour créer les barres de suivi, nous avons besoin d'une fonction d'assistance. Nous avons besoin d'une fonction de rappel. Donc, avant de créer la barre de suivi, je vais déclarer une fonction, Dave, et le nom de notre fonction est défini W. Ensuite, dans la rondeur, je vais passer X comme perder Ensuite, dans cette fonction, je vais simplement imprimer une déclaration vierge, imprimer. Il s'agit d'une fonction d'espace réservé à la barre de suivi appelée ainsi Il est appelé chaque fois que le Trager Vo change. Nous pouvons maintenant créer les barres de suivi pour le réglage des couleurs car nous avons déjà créé une fonction par défaut. Ici, dans un premier temps, nous devons fournir un nom tragb F cette minute CV à point nommé Window. À l'intérieur des robes rondes, je voudrais fournir un nom de trackb et le nom notre barre de commande est Coloured Dejector Après avoir attribué le nom, nous devons créer jusqu' à six barres de piste. La première est pour la teinte supérieure, puis nous allons créer pour la saturation supérieure et la teinte supérieure V. Ensuite, les trois autres sont la teinte inférieure, la saturation inférieure, la saturation inférieure et la valeur inférieure v. Pour créer notre première barre de suivi, tapez Amro, CV deux, point, créez Trad baar Ensuite, à l'intérieur de l'ombre contenue dans les rouleaux de codes, nous devons d' abord fournir le nom de la barre de suivi, et ce nom de barre de suivi est dans la teinte supérieure Ensuite, nous devons fournir le nom de la fenêtre dans laquelle je veux montrer la barre de suivi, et le nom de notre fenêtre est Coloured Decator Je copie le nom de la fenêtre et je le mets dans les codes doubles. Ensuite, nous devons transmettre la valeur, la position initiale du curseur de la barre de suivi, lors de son premier déploiement Dans ce cas, je veux commencer par 153. Ensuite, nous devons transmettre la valeur de comptage. Il va définir la valeur maximale du curseur de la barre de suivi et ici je vais dépasser 180 Maintenant, la plage du curseur est comprise entre 0 et 180. Ensuite, nous devons fournir la fonction par défaut. Comme vous pouvez le voir, le nom de notre fonction par défaut est set value Je copie donc le nom de la fonction et je vais le mettre en tête. Pour le U supérieur, nous avons défini la valeur 153. Ensuite, nous allons créer une saturation supérieure, je duplique donc cette ligne. Dans un premier temps, je vais changer la valeur U, du U supérieur à la saturation supérieure. Saturation supérieure. Tout d'abord, je vais changer la valeur et je vais la porter à 255. Ensuite, je vais modifier la valeur de la plage, qui est également 255. Lorsque vous ouvrez le tragar, il définit la valeur par défaut 255 Il va définir la valeur par défaut 255 pour la saturation supérieure Ensuite, je vais créer une valeur supérieure. Je duplique cette ligne, et ici je vais définir la valeur supérieure. Pour la valeur supérieure, je vais également utiliser la valeur 255 et compter la valeur jusqu'à 55. Après avoir créé les barres de suivi supérieures, vous devez créer trois barres de suivi inférieures. Je duplique donc toute cette section, et je vais modifier les valeurs. C'est la teinte supérieure, c'est la teinte inférieure. Pour un U inférieur, je vais définir la valeur 64. Ensuite, je vais définir et aussi dire la valeur de plage 180 et notre valeur de plage reste la même. Ensuite, pour une saturation plus faible, je vais définir la valeur 72 et notre plage reste la même, pour la valeur inférieure, je vais définir la valeur 49 et sa plage reste la même. Par défaut, cette gamme de couleurs va détecter la couleur bleue. Cette barre de déplacement, autrement, nous pouvons l'appeler curseur créé pour ajuster HSV. HSV représente la teinte, la saturation Nous créons ce seuil de réglage HSV pour détecter la couleur du marqueur et, par défaut, la couleur bleu herst Nous n'avons donc pas besoin de trop nous adapter. Lorsque nous ouvrons notre programme. Voici donc la première partie de ce tutoriel. En gros, dans cette partie, nous importons les bibliothèques et créons les tragars pour le réglage des couleurs Dans la partie suivante de ce didacticiel, nous allons créer la flottabilité colorée et nous allons également créer la configuration du dessin Merci donc d' avoir regardé cette vidéo. Rendez-vous dans la prochaine partie. 4. Point de coloriage et mise en place du dessin: C'est bon de vous voir, les gars. Il s'agit de la deuxième partie de ce didacticiel, et dans cette partie, nous allons effectuer la configuration des points de coloration et des dessins. Dans un premier temps, nous devons créer des gaufrettes colorées. Color Wafer est une mise à jour de liste permettant de stocker les points de dessin pour chaque couleur, telle que le bleu, le vert, le rouge ou le jaune Oui, nous allons utiliser quatre couleurs au total pour dessiner sur notre toile le bleu, le vert, le rouge et le jaune. Créons donc les tampons de couleurs. Nous devons donc créer un d. Nous devons créer plusieurs matrices. Donc, d'abord, je vais créer un d pour les points bleus, les points de couleur bleue. B, points. Les points bleus sont égaux à l'intérieur du carré en résine, je vais utiliser une méthode du module deck Nous avons déjà saisi un modèle appelé DC, nous allons l'utiliser. Donc, pour taper, DE D QE. Pendant la pause d'exécution, ici, je vais utiliser un appel de fonction maxlength maximum length, Mx AN, et je vais le définir 1024 Je duplique cette ligne et ensuite je vais créer des points pour la couleur verte, des points G. Je vais également créer des points rouges Decor. Enfin, je vais créer DCFord Euro Color. Je duplique cette ligne et c'est pour les points Y. Il s'agit d'une liste de dates pour stocker les points de dessin pour les marqueurs bleu, vert, rouge et ul. Chaque deck a une taille maximale de 1024 afin de limiter l'utilisation de la mémoire. Ces tableaux stockent les points. Je veux voir les coordonnées, qui sont dessinées avec une couleur spécifique. Dans notre cas, nous utilisons le bleu, vert, le rouge et le jaune. Ensuite, nous devons indexer et marquer le point pour une couleur spécifique. Donc pour cela, je vais utiliser une variable pour la couleur bleue, je vais utiliser un indice de soulignement bleu. Indice de soulignement bleu égal à zéro. Ensuite, je duplique cette ligne. Ensuite, je vais créer un index pour la couleur verte. Ensuite, je vais créer un sport d'index, couleur rouge, et enfin, je vais créer un sport d'index, couleur jaune. Index jaune. Ces variables font office de pointeur vers le **** actuel dans le tableau de couleurs correspondant. Lorsqu'un nouveau trait commence pour une couleur spécifique , un nouveau deck est ajouté au tableau correspondant. Supposons que je commence à dessiner à ce moment-là et que je trace cette ligne. Après avoir tracé cette ligne, je crée ce marqueur. Maintenant, si je commence à dessiner à cette position, cela créera un nouveau deck. fonction des couleurs, nous allons stocker les coordonnées de ce nouveau deck dans ces points. Supposons que nous utilisions la couleur bleue, alors nous allons enregistrer cette nouvelle fouille aux points bleus. Ne t'inquiète pas. Nous allons l' utiliser plus tard une fois le projet terminé avec une démonstration pratique de son fonctionnement Ensuite, nous devons définir la taille du noyau pour les opérations morphologiques Tapez donc un noyau de nom de variable. noyau égal à Np point sur elle crée une taille de noyau en utilisant le tableau Numpi à l' intérieur des séries pour transmettre une taille de noyau de cinq pixels Ensuite, nous devons passer le type D et point HeuTypeNP à l'interface utilisateur NT huit Il s'agit du type de document. Ce noyau est utilisé dans des opérations morphologiques telles que la dilatation et le traitement de la résine brillante agrandie dans une abord, nous créons une matrice de cinq par cinq remplie de uns, puis nous définissons le type de document. NP root UI Pas huit, assurez-vous qu'il contenait des entiers non signés de huit bits Je veux dire une valeur comprise entre 0,255. Fondamentalement, la détection des points de couleur dans l'image est améliorée , ce qui garantit que les petits espaces dans une ligne de dessin ou une couleur détectée sont comblés. C'est tout pour ce tutoriel. Dans le prochain tutoriel, nous allons dessiner une toile de fenêtre peinte. Nous allons créer une toile vierge sur laquelle nous allons dessiner. Ensuite, nous allons créer des boutons de couleur. Vous allez également créer un bouton supplémentaire pour TRD reste activé pour la partie suivante 5. Préparer la toile: Bonjour, les gars, c'est bon de vous revoir. Il s'agit de la troisième partie de ce didacticiel, et dans cette partie, nous allons peindre le canevas de la fenêtre. Ici, nous allons créer le canevas et les boutons. Donc, dans un premier temps, je vais définir les couleurs. Je vais donc créer une couleur variable. Et c'est un tableau et à l'intérieur ce tableau, nous allons créer un tuple Donc, à l'intérieur de ce tableau, à l'intérieur des cuivres ronds, je vais taper le premier code couleur Je vais définir la couleur bleue. Donc pour le bleu, je vais taper 255 virgule zéro, virgule zéro Ensuite, une fois dans le laiton, nous devons régler la couleur verte. Donc, tapez 02550. Ensuite, je vais parler de la couleur rouge. Puis, à l'intérieur des courses, zéro, zéro, 255. Puis une virgule supérieure. À l'intérieur des runras, je vais définir une autre couleur qui est le jaune, et pour le jaune, je tape 025-05-2505 Ici, je vais utiliser la couleur Ford comme marqueur. Bleu, vert, rouge et jaune. Ensuite, je vais créer un index de couleurs. Tapez donc l'indice de couleur. Pour l'instant, je vais attribuer zéro. Après la configuration de la couleur et de l'index, nous devons configurer le canevas. Pour cela, nous devons utiliser NumPi. Donc, d'abord, je vais déclarer une variable et notre variable est paint window. Paint la fenêtre égale pour dessiner le canevas, je vais utiliser la méthode Np point zéro. Au cours de la course, nous devons d'abord définir la dimension, la dimension de ce canevas, et je vais le faire 471 par 636, et je vais utiliser total de trois canaux de couleur, trois barres additionnées Après cela, je veux une toile de couleur blanche. Je vais donc ajouter plus 255. Cela va générer une toile de couleur blanche. C'est à 2:55 par rapport à la valeur totale des pixels, donc ça va le rendre blanc Par défaut, No Jos crée une image en noir. Nous devons maintenant créer les composants de l'interface utilisateur. Nous devons créer les boutons, tels que le bouton transparent, les autres boutons colorés. Nous devons également mettre du texte sur ce bouton. Pour cela, nous allons utiliser des rectangles pour dessiner le bouton. Et je vais dessiner ce rectangle sur la fenêtre humide, donc je tape une fenêtre de peinture égale à la méthode CV du rectangle à deux points, rectangle Et à l'intérieur du pinceau rond, nous devons d'abord définir dans quelle image je veux dessiner le rectangle Dans notre cas, peignez la fenêtre. Ensuite, nous devons définir le premier point. Tout d'abord, nous devons définir le coin supérieur rodé. Ici, je vais passer à l'intérieur des cuivres ronds pour la virgule Ensuite, nous devons définir le coin inférieur droit de ce rectangle. Au cours des rondes, je vais passer les 140 65. Ensuite, nous devons définir la couleur. Pour l'instant, je vais utiliser la couleur noire pour le bouton d'effacement. Je vais donc le rendre noir. Donc, pendant les rondes, je vais passer le million. Ensuite, nous devons fournir l'épaisseur, et pour l'épaisseur, je vais en utiliser deux. la même manière, je vais créer d'autres boutons pour les autres couleurs. C'est pour Tear Button. Je duplique cette ligne et cette fois, je vais changer les points. Après avoir dupliqué cette ligne, je vais d'abord changer le point de valeur du coin supérieur gauche. Maintenant, ça commence à 160 et ça se termine par un. Il s'agit de la valeur excédentaire et de la valeur YS. Nous devons également fournir la valeur du coin inférieur droit. Maintenant, cela commence à 255. Et ici, je vais utiliser notre première couleur à partir de la variable colors. Couleur bleue Pour sélectionner la couleur bleue, nous devons taper ici la couleur, les couleurs, et là je veux appeler le premier index. À l'intérieur des pièces carrées, je vais passer zéro. Comme vous le savez, au premier index, nous attribuons la couleur bleue, et je veux remplir ce rectangle avec cette couleur. Donc, comme épaisseur, je vais passer moins Y. Je vais remplir le rectangle avec la couleur Ensuite, je fais cette ligne et cette fois, je veux sélectionner la deuxième couleur. Side Pass Index 1. Vous devez également modifier la position de ce rectangle. Donc, je suis à 275 par un pour la valeur en bas à droite, je vais passer 370. C'est pour le bouton de couleur verte, puis nous devons créer un bouton de couleur rouge. Je duplique à nouveau cette ligne. Et d'abord, je vais changer l'indice numéro deux, et nous devons également changer la position du silence de départ de ce rectangle pour passer 390. Et la valeur du coin inférieur est 485. Ensuite, nous devons créer un bouton de couleur jaune. Je le duplique donc à nouveau et je vais changer le numéro d' index, en faire trois. Nous devons également définir la position. Je veux commencer par 505 pixels, et notre valeur en bas à droite est 600. Et je vais satisfaire. Maintenant, je vais mettre du texte sur ce bouton Effacer car pour le bouton Effacer, ai utilisé la couleur noire. Je veux donc y mettre un texte. Pour cela, tapez une fenêtre à cheveux, CV deux, fléchette, méthode put text, put text Ensuite, à l'intérieur du RounderSSF, je veux définir dans quelle fenêtre je veux mettre le texte, qui est une fenêtre de peinture. Celui-ci. Ensuite, nous devons transmettre le texte. Quel texte souhaitez-vous faire passer ? Je veux taper ici. Ensuite, nous devons définir le point d'origine de ce texte. Et à l'intérieur de la course, je vais passer 49 à 33. C'est le point d'origine de ce texte, et ensuite, nous devons définir la police de caractères. Quelle police de caractères je souhaite utiliser ? Pour la phase de police, je vais utiliser CV à deux points, police ho underscore, police hi SymTist one. Ensuite, nous devons définir l'échelle de police, et je vais utiliser 0,5. Après avoir défini la taille de police, nous devons définir la couleur de police, et pour la couleur de police, je vais utiliser cette couleur. Le son passe 00, virgule zéro. Ensuite, nous devons fournir l'épaisseur, et je vais en utiliser deux. Enfin, nous devons fournir le type de ligne. Pour le type de ligne, je vais taper CV à deux points. La ligne souligne celle-ci Ensuite, je vais créer une fenêtre pour afficher le canevas. Pour cela, je vais taper cv nom à deux points Window Method, nom Window. Ensuite, à l'intérieur des rondresses, nous devons d'abord fournir le nom de la fenêtre et dans notre cas, je vais taper Pate Nous devons également définir les drapeaux pour contrôler les propriétés de cette fenêtre. Ici, je dois passer CV à point, Window AutoSizet un. Ce dimensionnement automatique de la fenêtre garantit que la fenêtre ajuste automatiquement sa taille en fonction du contenu affiché Il peut s'agir d'une vidéo ou d'une image. C'est tout pour cette partie. Dans la partie suivante, nous allons démarrer le traitement des images en utilisant follow et nous allons extraire le cadre de notre webcam. Merci d'avoir regardé cette vidéo restez connectés pour le prochain studio. 6. Configuration de la caméra et boucle principale: C'est bon de te revoir. C'est l'autre partie de ce projet, et nous allons commencer par la capture de l'image vidéo. Donc, d'abord, je vais commenter cette ligne. Nous n'avons pas besoin de cette fenêtre peinte. Je vais donc le commenter de temps en temps , puis je vais créer une variable et notre variable est un plafond égal à une vidéocature à deux points CV Celui-ci, puis à l'intérieur des presses rondes, je vais passer la source, et nous voulons démarrer la caméra par défaut, donc je vais passer zéro. Ici, nous initialisons la webcam pour capturer la vidéo en direct Ensuite, nous devons exécuter une boucle infinie pour le traitement vidéo. Pour cela, je vais utiliser ici la boucle While. Bien que cela soit vrai. Ensuite, dans cette boucle while, je vais utiliser une méthode. Je vais utiliser la méthode de lecture. Ici, pour taper cap point read. Cette méthode va lire toute la trame de cette variable de cap. Et comme vous le savez, cette méthode va renvoyer un total de deux résultats. abord, il va renvoyer une valeur Bullen, puis il va renvoyer le cadre d'image réel, et nous devons stocker les deux valeurs dans une variable Pour la valeur Bullen ici, je vais utiliser une variable appelée success et pour et pour l'image, je vais utiliser une variable frame égale à la méthode cab point read Maintenant, après avoir lu le cadre, je vais le retourner. Je veux retourner le cadre horizontalement parce que je veux faire de cette fenêtre un vio foror cela, donc ici je vais lier le cadre égal à la méthode de retournement à deux points du CV Ensuite, à l'intérieur des rondresses, nous devons d' abord transmettre le fichier source abord, nous devons transmettre la source de l'image source et le nom de notre source d'image est frame, et nous devons également transmettre le flip-code, et en tant que flip-code, je vais en transmettre un. Cette valeur va retourner le cadre à l'horizontale. Ensuite, je vais convertir ce cadre en espace colorimétrique HSB Pour cela, je vais déclarer une autre variable hSv égale à CV deux, couleur CVT. Dans le Rundress en tant que source, je vais passer le cadre. Ensuite, je vais convertir cette image de Bzier en couleur GSV Je vais taper CV à deux points, soulignement, et je veux le convertir en BGR deux Ici, nous convertissons ce cadre en espace colorimétrique HSV pour faciliter la segmentation des couleurs Et comme vous le savez, HS est l' abréviation de saturation et de valeur des teintes. Ensuite, nous devons saisir la valeur du seuil HSV. Nous devons récupérer les valeurs des seuils supérieur et inférieur à partir des barres de suivi. Pour cela, nous devons utiliser une méthode, et le nom de notre méthode est gate track bar pause. Donc, au début, je veux récupérer le plus haut, donc je vais taper U, U représente le trait de soulignement supérieur U. Upper U est égal à C deux, point, get track but pause Cette fonction. Ensuite, à l'intérieur de la passe ronde entre guillemets, nous devons d'abord passer, nous devons passer le nom du track bud à partir de quelle barre de piste, je veux recevoir la valeur Et le nom de notre titre est « upper hue ». Je vais donc copier ce nom rab en haut de Hu, et je vais le coller entre guillemets doubles Ensuite, nous devons passer le windoame comme vous pouvez le voir, ici nous déclarons le nom de la fenêtre et notre windoame est composé de détecteurs de couleurs Je copie le nom de la fenêtre, et je vais le mettre dans les codes doubles. la même manière, nous devons saisir la valeur de saturation supérieure. Pour cela, je vais dupliquer cette ligne, et dans un premier temps, je vais changer le nom de la variable. C'est pour la saturation supérieure. Vous devez également modifier le nom du train. Je vais copier la valeur saturation supérieure, et je vais la coller ici. Ensuite, je double cette ligne et nous devons également utiliser le même nom de fenêtre qui est le détecteur de couleur Ensuite, nous devons créer une variable pour supérieure de la valeur supérieure et pour la valeur supérieure, je vais copier ce TRabNameUper je vais copier ce TRabNameUper V. Ici, nous récupérons le u supérieur, la saturation supérieure et la valeur supérieure de la même manière, nous devons récupérer le U inférieur, la saturation inférieure et la valeur inférieure la valeur supérieure de la valeur supérieure et pour la valeur supérieure, je vais copier ce TRabNameUper V. Ici, nous récupérons le u supérieur, la saturation supérieure et la valeur supérieure de la même manière, nous devons récupérer le U inférieur, la saturation inférieure et la valeur inférieure. Je vais dupliquer cette section et remplacer les noms des variables. C'est pour le HU inférieur et pour le U inférieur, je vais utiliser ce nom d'interdiction de traîner, en U inférieur. Et pour une saturation plus faible, je vais d'abord changer le membre variable, saturation inférieure et les cheveux serrés juste plus bas Diminuez la saturation, et pour une valeur inférieure, une valeur égale à et juste à nouer, abaissez les cheveux. Valeur inférieure. Nous récupérons ici la position actuelle des barres de suivi. Je veux parler de ces sliders. Et comme vous le savez, les barres de suivi permettent de régler dynamiquement le seuil HSV pour la détection des couleurs en temps réel Nous l'avons déjà fait dans nos projets précédents. Passons maintenant à la définition de la plage HSV supérieure et inférieure, la gamme de couleurs HSV Pour cela, je vais créer une variable appelée Upper Underscore HSV HSV supérieur égal à Np point A. À l'intérieur de la résine ronde, je vais utiliser des vases carrés Et ici, je vais passer, et ici je vais transmettre toutes les variables supérieures. La teinte supérieure passe d'abord sous le hu supérieur, puis je vais passer à la saturation supérieure Ensuite, je vais passer la valeur supérieure. De la même manière, nous devons déclarer un autre tableau. Nous devons créer un autre tableau pour une valeur HSV inférieure. Donc ici, je vais dupliquer cette ligne et hernotyper le HSV inférieur Je vais passer, plus bas. Je vais donc remplacer U par L, pour une saturation plus faible et une valeur plus faible. Maintenant, après avoir créé les GeSR supérieur et inférieur, nous devons créer les boutons rectangulaires de notre image en direct Pour cela, je vais utiliser la même méthode, la méthode du rectangle pour créer le rectangle à la même position. Je copie donc tous les rectangles de la peinture. Et je vais le placer sous les arêtes inférieures V, et nous devons le déplacer à l'intérieur du niveau d'indentation, c'est important car nous travaillons sur Python. C'est sympa. Maintenant, cette fois, nous devons créer ce rectangle dans le cadre lumineux, ce cadre. Ici, nous créons le bouton rectangulaire sur la fenêtre blanche, cette fenêtre de peinture. Mais cette fois, nous devons le créer à l'intérieur du cadre lumineux. Pour cela, nous devons remplacer cette variable de fenêtre de peinture par la variable de cadre. Copiez la variable m frame, et je vais remplacer la fenêtre de peinture par la variable frame. Donc, un par un, je vais remplacer le nom du cadre. Tous les noms de variables. Châssis. Ne vous inquiétez pas, je fais avancer ce processus rapidement. Au fur et à mesure que je vais toucher ce rectangle étrange de couleur noire, je vais passer à moins un. Je vais configurer ce fichier. Après avoir configuré ce fichier, je vais mettre le texte sur ce bouton auriculaire. Pour cela, je vais copier la même ligne, mettre du texte. Je copie cette ligne et je vais la coller après le rectangle. Ici, vous n'avez rien à changer. Ici, je vais juste changer le nom du cadre. Et nous devons placer le texte dans cette variable de cadre, pas dans la fenêtre de peinture. Je vais copier Donc, remplacez la fenêtre de peinture par cadre variable à cadre, et je vais définir celle-ci. Maintenant, je vais exécuter le code dans mon terminal, mais avant d'exécuter le code dans mon terminal, je vais définir ici une condition E. Sinon, cela ne brisera pas la boucle et ne traversera aucun toit. Je vais donc d'abord définir une condition pour quitter la boucle. Ici, je vais taper la clé à deux points I CV à l'intérieur des cuivres ronds, je vais régler une milliseconde et je vais régler une milliseconde et le signe « And Boston ». Zéro x FF, égal à deux, je vais exécuter la méthode ORD ORD. À l'intérieur, le rond dit que si je fais l'éloge du petit Q, c'est que je veux briser la boucle C'est la condition p, je veux rompre la boucle. Pause. Nous devons également publier la capture. En dehors de la boucle while, ici, je vais taper Capt release method, cp point release Cette méthode va publier notre service Web. De plus, je vais détruire toutes les fenêtres. CV à deux points, détruisez toutes les fenêtres, celle-ci. Et puis je veux afficher les deux cadres. Au début, je veux afficher la fenêtre blanche, qui est une fenêtre de peinture, un cadre de fenêtre de peinture. Ici, je vais exécuter une méthode appelée CV two dot I'm from method. Et à l'intérieur des arêtes, je vais passer le nom de la fenêtre et le nom de notre fenêtre est fenêtre blanche Et nous devons également transmettre la source du cadre. Et comme vous pouvez le voir, nous allons utiliser ce cadre, cette fenêtre de peinture, ce cadre vide. Je copie donc le nom de la variable, et je vais le coller ici. Ensuite, je vais afficher un autre cadre. Je duplique donc cette ligne, et cette fois, je veux afficher cet ordinateur central, le cadre lumineux. Alors, tapez cam. C'est une caméra lumineuse. Je vais également placer la variable, qui est le cadre. Je vais dire ces cinq points. En gros, je vais exécuter ce code pour vérifier Perverse Est-ce qu'il place les rectangles ? Où souhaitez-vous vous placer ? Vérifie le code. Après avoir exécuté ce code, comme vous pouvez le voir, il affichera d' abord la piste, la barre de couleur, où vous pouvez voir ce curseur . Après un certain temps, je peux attendre un certain temps, il ouvrira notre caméra Il faut donc attendre un certain temps pour démarrer l'appareil photo. Comme vous pouvez le voir, vous pouvez voir ici une fenêtre blanche, et nous devons masquer cinq boutons, quatre boutons couleurs et un bouton à un niveau. la même manière, dans notre fenêtre en direct, vous pouvez le voir ici, nous devons masquer cinq boutons, quatre boutons couleurs et un bouton à un niveau. Mais le problème est que le texte de l'oreille n'est pas visible sur la fenêtre lumineuse car nous utilisons ici la même couleur de fond, le noir. C'est pourquoi le texte correspond à la couleur de fond. Et pour le rendre visible, il faut le rendre blanc. Je vais donc fermer toutes les fenêtres, et ici je vais taper 255 pour le bleu, pour le vert, je vais également passer 255 et pour le rouge, je vais également passer 255. Maintenant, si j'exécute ce code, il renverra le texte blanc dans la fenêtre de bibliothèque. Comme vous le savez, par défaut dans nos sliders, héros est de couleur bleue Je vais détecter la couleur bleue. Vous pouvez également changer si vous changez le curseur par rapport C'est tout pour ce didacticiel Dans la prochaine partie de ce tutoriel, nous allons travailler sur le masquage Nous allons également détecter les contours. Merci d'avoir regardé cette vidéo, restez connectés pour la prochaine partie. 7. Identifier le pointeur en utilisant un masque: C'est bon de vous voir, les gars. Encore une fois, je suis de retour avec une autre vidéo en lien avec ce projet. Et dans cette partie, nous allons identifier le pointeur en créant un masque. Donc, dans un premier temps, je vais commenter les deux lignes. Je n'ai pas besoin de ces lignes pour le moment. Ensuite, je vais créer un masque. Après avoir créé le masque, nous devons l'affiner encore et encore en utilisant différentes méthodes. Dans un premier temps, je vais créer un masque, un masque MSK à bit variable égal à Je vais utiliser la méthode in range, CV two.in range. Ensuite, à l' intérieur de la rotonde, nous devons d'abord fournir la pile source En tant que source, je vais passer le HSV, le HSV au HSV Ici, je passe ce cadre HSV, celui-ci. Après cela, nous devons réduire le HSV. Pour un HSV inférieur, comme vous pouvez le voir, nous créons ici une variable, WerHSB C'est un tableau. Je veux transmettre ce tableau, puis nous devons transmettre le HSV supérieur En gros, la fonction ing permet d'isoler la crête de couleur souhaitée et d'utiliser cette fonction pour créer un masque binaire. Cette masse est un masque binaire dans lequel les pixels blancs représentent les zones de l'image d'origine qui correspondent à la gamme de couleurs souhaitée. Supposons que nous sélectionnions la couleur bleue et que ce masque détecte la couleur bleue et blanchisse cette partie Après avoir créé la masse à l' aide de la fonction annelée, nous devons supprimer bruit, nous devons supprimer le bruit en rétrécissant les zones blanches Pour supprimer le bruit en réduisant les zones blanches, nous devons utiliser une méthode appelée erot Ici, je vais taper le masque égal au masque anglais, je vais appliquer la méthode CV à deux points Rod. OT. Ensuite, à l'intérieur des rondelles, nous devons d'abord fournir cette source Et comme source, je vais fournir le masque variable mask. Ensuite, nous devons transmettre la taille du noyau et pour le noyau, je vais transmettre cette variable, kernel. Ici, nous créons un noyau cinq par cinq. Je copie ce noyau de nom de variable et je vais le transmettre ici. Ensuite, nous devons définir l'itération. Pour l'itération, je veux une itération. Dans un premier temps, nous passons ici le masque binaire, qui est opté depuis la date précédente, puis nous passons le noyau Il s'agit d'un élément de structure, qui est utilisé pour l'érosion, puis nous passons l'itération. Et en voici une. Il est défini le nombre de fois que l'opération d'érosion est appliquée. En gros, cette méthode va réduire la taille du sinus blanc en supprimant les pixels limites. Après cela, nous devons supprimer tous les petits bruits. Pour cela, nous allons utiliser une méthode appelée morphologie EX Donc, encore une fois, je vais attacher un masque égal à v morphologie à deux points Ex puis à l'intérieur de la pause ronde, je vais d'abord fournir le masque binaire, puis nous devons fournir l'opération, une opération morphologique Pour cela, je vais taper CV to dot morph op. Celui-ci. Ensuite, nous devons définir la taille du noyau et pour la taille du noyau, je vais utiliser la même variable kernel. En gros, elle filtre pas le masque et cette méthode va supprimer tous les petits bruits. Ensuite, nous devons étendre et affiner la zone blanche pour restaurer la forme. Pour cela, nous devons utiliser une autre méthode. Je voudrais parler d'un autre filtre, qui est dilaté. Encore une fois, je veux attacher le masque de la même manière que la méthode de dilatation de la civette. Ensuite, à l'intérieur des robes rondes, nous devons d'abord passer le masque binaire Je vais donc taper mask, virgule, puis fournir la taille du noyau, qui est le noyau, puis nous devons fournir l'itération Pour l'itération, je vais en adopter une. Cette séquence est couramment utilisée dans des tâches telles que la détection d'objets. En outre, il s'agit d'une segmentation basée sur les couleurs. Ou nous pouvons l'utiliser pour la détection des contours. Après avoir appliqué toutes les méthodes, il va affiner notre objet marqueur. Ensuite, nous devons trouver les contours du pointeur après l'avoir identifié. Mais nous n'allons pas faire ce tap dans cette vidéo. Nous allons le faire dans le prochain studio. Je vais maintenant afficher cette fenêtre de masque en utilisant la méthode IM Shu. Pour cela, Hotype Cv point M show. Dans la méthode IM Show, vais d' abord fournir un nom de fenêtre pour le nom de la fenêtre, je vais utiliser un masque. De plus, en tant que variable, je vais transmettre la variable de masque. Ensuite, je vais configurer ce fichier. Après avoir défini ce fichier, je vais exécuter ce code dans mon terminal, et je vais attendre un certain temps pour voir s'il fonctionne correctement ou non. Comme vous pouvez le voir, cela ouvre une fenêtre de masque noir et vous ne pouvez rien voir dans cette fenêtre. Mais dans ma main, j'ai un pointeur bleu, bleu. Si je déplace ce pointeur devant mon appareil photo, vous pouvez maintenant le voir identifié. Il a identifié ce pointeur bleu. Maintenant, vous ne pouvez voir que le pointeur bleu. Lorsque je déplace ma main, elle déplace également le pointeur. Cela fonctionne. J'ai réussi à identifier le pointeur. Après avoir identifié le pointeur, nous devons identifier le contour, mais je ne vais pas le faire dans ce didacticiel Je vais le faire lors du prochain tutoriel. Merci d'avoir regardé cette vidéo. Restez à l'affût. 8. Trouver le contour du pointeur: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un autre tutoriel en lien avec ce projet. Et dans ce tutoriel, nous allons trouver le contu du pointeur Dans un premier temps, je vais supprimer ces deux lignes. Je n'en ai pas besoin. Ensuite, pendant que vous êtes là , je vais détecter les contours. Nous devons trouver le contour dans ce masque binaire. Fondamentalement, les contours sont des carbes joignant tous les points continus le long de la limite de l'objet, avec la même intensité Maintenant, pour trouver les contours, nous devons utiliser la méthode des contours fins. Dans un premier temps, je vais déclarer un total de deux variables. Pour le contour, je vais taper Cn Tf. Avec cela, je vais déclarer une autre variable appelée Z égale à deux, et je vais utiliser notre méthode fine contuse Je vais taper le CV 2 qui précise les contours à l'intérieur des rondes. Tout d'abord, je vais taper masque, copier. Je vais utiliser la version copiée de ce masque. Ensuite, en tant que deuxième paramètre, nous devons passer le mode. Je vais taper CV à point. RDT sous-scope externe, celui-ci, virgule, et interpasse également Pour ce qui est de la méthode, je vais associer l'approche CV à deux chaînes de points, simple, celle-ci. Cette méthode va renvoyer la liste des contours qui se trouvent sur cette image, l'image du masque, la deuxième variable est destinée à la deuxième sortie, qui est Il est ignoré car il n' est pas utilisé ici. Dans notre premier paramètre, nous passons la version café de cette image de masque binaire. Deuxièmement, nous passons le mode. Ce mode ne récupère que le contour extérieur et en ignore un à la place de certains. Enfin, nous adoptons méthode d'approximation des contours qui comprime les segments horizontaux, verticaux et diagonaux pour ne conserver que leurs extrémités. Cela va réduire l'utilisation de la mémoire. Comme je vous l'ai dit, cette méthode va inscrire en liste une liste de condurs Ensuite, nous devons traiter le plus grand contour. Mais avant de commenter cette ligne, sinon, nous pouvons supprimer cette ligne. Nous n'en avons pas besoin. Mais avant de traiter, je vais d'abord déclarer une variable, et notre variable est centrale. Au centre, pour le moment, je vais en faire une nonne Cela sera initialisé avec nun. Il mémorisera les coordonnées du centre du plus grand contour s'il en trouve un Ensuite, nous devons posséder le plus grand contour en utilisant les conditions IP. Ici, je vais taper et je vais utiliser la fonction LN. À l'intérieur de la fonction len, je vais passer les contues CNT Si les contours sont supérieurs à zéro, alors dans cette condition IP, nous devons maintenant raccourcir les contours pour trouver les plus grands contours Pour raccourcir les contours, je vais taper CNT, égal à, je vais utiliser une méthode appelée short eight Le huit à l'intérieur des rondes est d'abord intercalé avec l'itérable et nous allons itérer cette variable, Ensuite, nous devons passer la clé. La clé est égale à la zone de contour à deux points du CV I'm Pass. Zone de contour, celle-ci. L' inverse du coma et de l'amyoti est égal à vrai. Et pour sélectionner le plus grand contour de cette liste, nous devons passer le numéro d'index. À l'intérieur de la presse carrée, je vais passer zéro. Maintenant, laissez-moi vous expliquer cette méthode de tri. Ici, nous trions les conduits en fonction de leur superficie par ordre décroissant C'est pourquoi nous lui tapons reverse true. Ensuite, nous devons trouver le plus petit cercle qui puisse complètement masquer le conduit sélectionné. Pour cela, je vais taper à l'intérieur des robes rondes. Encore une fois, je vais utiliser des robes rondes, puis des virgules X, des coordonnées Y , et en dehors du domaine de la gestion, je vais passer Coma, je vais passer un rayon Pour obtenir le rayon du cercle environnant autour du contour, nous devons utiliser une méthode et notre méthode est le mini-cercle enveloppant nous devons utiliser une méthode et notre méthode est le mini-cercle Ici, je vais taper CV Mini cercle enveloppant à deux points , celui-ci Ensuite, à l'intérieur de l'ombre, il est dit que nous devons fournir le contour, le contour exact, que vous trouverez dans cette liste, je vais taper CNT Et cette méthode renvoie les coordonnées XS. Il renvoie également le rayon. Ensuite, en utilisant ce Xs Xs et le rayon, nous allons dessiner un subtil. Nous allons dessiner le cercle autour du contour. Pour cela, je vais utiliser la méthode du cercle. Je vais associer un CV à un cercle. Ensuite, à l'intérieur des ronders, nous devons d'abord fournir l' image dans laquelle je veux dessiner le cercle Ici, je vais laisser passer exactement le libre Ce cadre STFramfring. Ensuite, nous devons passer le point central. Donc, à l'intérieur, la robe ronde se trouve chez XY. Mais le problème est que nous devons convertir ces coordonnées en nombres entiers. Cette fonction renvoie les coordonnées sous forme de chaîne. Nous devons le convertir en entier. Je vais l'utiliser en fonction. Si je ne participe pas au processus du tour, je vais passer les X X. De la même manière, INT. À l'intérieur du ras rond, je vais dépasser les YxS. Ensuite, nous devons passer le rayon. Pour le rayon A, je vais utiliser la fonction in dans la méthode INT. Ensuite, à l'intérieur du laiton rond, je passe le rayon. Après avoir fourni le rayon, entrez également pour fournir de la couleur. Pour la couleur, je vais utiliser zéro virgule 255255. Il est de couleur jaune. Ensuite, vous devez indiquer l' épaisseur de ce rayon, et en tant qu'épaisseur, je vais en indiquer deux. Maintenant que j'ai dessiné ce cercle à l'intérieur du contour, nous devons détecter le centre. Nous devons détecter le point central pour calculer le centre des contours détectés. Tout d'abord, je vais taper une variable appelée A, AM égale à, et je vais utiliser une méthode CV à deux moments de points. À l'intérieur de la sœur ronde, je vais passer devant le contu CNP. À l'aide de cette méthode, nous calculons les moments spéciaux du contour, qui sont des quantités scalaires utilisées pour dériver les propriétés du contour Maintenant, en utilisant ce moment spécial, nous devons calculer le centre de ce cercle. Et pour cela, nous devons utiliser une formule. Mais avant de calculer le centre, nous devons d'abord comprendre la méthode du moment. Comme vous pouvez le voir, ici je tape « single » et « comète ». À ce moment, méthode de retour à la commande. Il s'agit d'un mouvement de premier ordre. Ici, il indique le point et 01 point et celui-ci est égal à zéro pour ordonner le mouvement, zone du conduit ici, il renvoie zéro point Donc, si je divise n 010 et n01 par n00, cela renverra les coordonnées Xs et les coordonnées Y xs du centre de ce cercle Pour cela, nous devons utiliser une méthode. Pour cela, je vais créer une variable pour calculer le point central, du type center. centre est égal à l'intérieur des robes rondes Dans un premier temps, je vais extraire la coordonnée X. Quelqu'un utilise la méthode informatique. Il s'infiltre dans les robes rondes. Au début, je vais diviser A à l'intérieur des carrés, l'intérieur des codes simples, A dix, et je veux le diviser, donc j'utilise la division sinus avec A à l'intérieur de la résine carrée, je veux le faire cette fois, je veux passer à l'intérieur des codes simples, le double zéro Virgule. Nous devons maintenant extraire la coordonnée Y. Cela va renvoyer la coordonnée et nous avons également besoin de la coordonnée Y. la même manière, je vais taper INT dans la résine ronde Ici, je vais passer à l'intérieur de ces résines carrées. Dans un premier temps, je vais passer un 01 Je veux diviser cela dans le carré à l'intérieur des codes doubles, un double zéro. Cela va renvoyer les coordonnées Y. Et vous allez le stocker dans la variable centrale, le centre égal à ce calcul, et convertir les coordonnées calculées en indexeurs, car c'est cette valeur sous forme de position en pixel En gros, ce code crée le plus grand contour d'une image binaire Dans notre cas, masquez l'image du masque et tracez un cercle autour de celle-ci De plus, nous calculons le centre en utilisant des moments spéciaux. Il est couramment utilisé dans les applications de suivi d'objets. C'est tout pour ce tutoriel. Dans la prochaine partie de ce didacticiel, nous allons traiter le bouton. Nous allons gérer les clics sur les boutons. Merci d'avoir regardé cette vidéo, Tatune pour la suite de ce tutoriel 9. Manipuler les boutons: C'est bon de vous revoir, les gars. Encore une fois, je suis de retour avec une autre vidéo liée à ce projet, et dans cette section, nous allons traiter des coups de bouton Comme vous le savez, nous créons différents boutons, tels que le bouton transparent, le bouton couleur rouge, le bouton de couleur jaune, le bouton de couleur verte et le bouton de couleur bleu. Maintenant, nous devons gérer les coups de bouton. Donc, lorsque je passe mon MarkR au-dessus du bouton, je souhaite activer le bouton Supposons que si je passe mon curseur au-dessus du bouton Effacer, je souhaite effacer tous les dessins la même manière, si je passe mon marqueur au-dessus du bouton jaune, j' active le marqueur jaune Ensuite, il va dessiner les formes en jaune. Commençons par la condition IP. Ici, je vais taper I centré à l'intérieur de la résine carrée, je vais passer l' index numéro un, inférieur à 65, puis dans cette condition IP, je vais utiliser une autre condition IP Mais avant d' expliquer cette ligne, quelle est la signification de cette condition ? Cela permettra de vérifier si le centre de l'objet dédié se trouve dans la partie supérieure de l'écran, exemple si les coordonnées Y sont inférieures ou égales 65, alors cette zone est réservée au bouton cliquable Ensuite, dans la condition IP, nous allons d'abord utiliser le bouton d'effacement. Somme 40, inférieur à égal au centre du numéro d' index zéro inférieur à 140 Ensuite, dans cette condition IP, cette condition qui consiste à vérifier les coordonnées X du centre se situe dans la plage de 40 à 140 correspondant à la position des boutons auriculaires Si c'est vrai, l' action de l'engrenage est déclenchée. Ensuite, vous devez effacer tous les points pour la couleur bleue, couleur verte, la couleur rouge et la couleur jaune en réinitialisant la liste d'objets correspondante Comme vous le savez, chaque de représente un point pour le drive. Donc, un par un, je vais effacer les points, tous les points de couleur. Comme vous le savez, nous déclarons ici nos points de deck. Nous créons des objets de deck, des points B, des points G, points R et des Eulopoins Ces points correspondent à la couleur bleue, couleur verte, à la couleur rouge et à la couleur jaune. Donc, pour copier toute la section. Je vais utiliser le même ate, et je vais le coller dans cet article sur cette affection de la hanche. Ici. Je vais le placer à l'intérieur de l'étiquette d'indentation Pour ce d, je vais définir l'utilisation de la mémoire, et pour l'instant, je vais définir l'utilisation de la mémoire, 512. Je vais remplacer toutes les valeurs par 512. Ces points de date stockent les points de dessin pour les martyrs bleus, verts, rouges et jaunes. Vous définissez ici la limite de taille maximale, et chaque deck a une taille maximale de 512 afin de limiter l'utilisation de la mémoire De plus, nous devons remettre à zéro tous les indices de couleur pour chaque couleur Donc, ici, je vais copier cette section, cet index de couleur, cet indice de couleur bleu, cet indice de couleur verte, cet indice de couleur rouge et cet indice de couleur jaune Et je vais le coller ici. Nous devons également le déplacer à l' intérieur du niveau d'indentation. Maintenant, pour effacer la zone de dessin de la fenêtre de peinture, nous devons supprimer toutes les couleurs de trait de cette fenêtre de peinture. Nous devons faire en sorte que tous les pixels soient blancs. Pour cela, je vais taper ici Je vais taper paint window. À l'intérieur du ssh carré, nous devons effacer la zone de dessin de la fenêtre de peinture en mettant en blanc tous les pixels situés sous la ligne de 67 Dans un premier temps, nous devons nous référer à toutes les lignes à partir de la ligne numéro 67. Ici, je vais taper 67, puis semi-froid. Cela s'est passé de la ligne 67 à la fin. Je veux dire que de la ligne 67 au bas de l'image, nous devons renvoyer toutes les colonnes à la largeur de la plage d'images pour ce phénotype Ensuite, deux points, puis nous devons référencer tous les canaux. Encore une fois, je vais taper com et je dois également taper deux points pour sélectionner tous les canaux de couleur. Cela sélectionne donc toute la zone dessinable de l'image à partir de 67 à. Ensuite, je vais attribuer une valeur à la pièce sélectionnée et je veux en attribuer 255. Nous attribuons ici la valeur sélectionnée à la partie de cette combinaison et 255 représente l' intensité maximale pour chaque canal pour chaque canal de couleur En gros, il va renvoyer un bon pixel. Il va donc activer le bouton Effacer et effacer la fenêtre. Ensuite, un par un, je vais utiliser ces coordonnées et activer ces rectangles en particulier Tout d'abord, je vais travailler pour la couleur bleue. Ici, je vais taper Ls dans la condition 160, inférieure à égale au centre. À l'intérieur des adresses carrées, je vais passer un index nul avec un chiffre inférieur à 55. Insérez ensuite cette condition, indice de couleur de l' hème est égal à, et je souhaite sélectionner le premier index Et comme vous le savez, dans notre indice de couleur, nous enregistrons quatre couleurs au total et notre première couleur est le bleu. Je vais donc utiliser un indice zéro. C'est pour la couleur bleue. Donc, Helm roti, un commentaire a une étiquette, il est bleu. Ensuite, je duplique cette section, et cette fois, je vais définir les coordonnées entre, pour la couleur verte, je tape 275 B et notre zone est 370. Ensuite, je vais changer la couleur de cette ligne. Je vais en faire un. Encore une fois, je vais dupliquer cette section et cette fois notre plage de pixels 300-9390 Je vais utiliser cette fois, je vais utiliser l'indice de couleur deux. C'est notre couleur verte. Je vais donc changer le commentaire en vert. Et celui-ci est pour la couleur rouge. Encore une fois, je vais dupliquer cette section et cette fois, je vais changer les coordonnées. Maintenant, on part de 505 pixels et on passe à 600 pixels. Cette fois, je vais utiliser notre troisième indice de couleur trois. Si nous déplaçons notre pointeur à cette position et à ces coordonnées, cette option de couleur sera activée. Si nous déplaçons notre marqueur de 100-60 x 255, il va passer à la couleur bleue En même temps, il va activer le vert, le rouge, et le dernier sera de couleur jaune. Et maintenant, nous devons gérer le dessin si l'utilisateur n'est pas dans la zone inférieure. Ainsi, dans la partie située à l'intérieur de la condition s, ce sp s'exécute lorsque le centre n'est pas la raison principale. Je tiens à dire la principale raison de cet écran. Si notre condition ne correspond pas à cette condition IP, elle va passer dans la partie s. Si notre état est supérieur à 65, alors il va passer dans la partie s. Dans cette partie, nous allons gérer la tique colorée correspondante. Nous allons ajouter le point central à la prise colorée correspondante Donc, un par un, je vais gérer tous les indices de couleur, et nous devons ajouter les points de couleur à l'indice de couleur Et comme vous le savez, ce sont tous des indices de couleur. Ici, je vais taper indice de couleur égal à zéro. Comme vous le savez, zéro représente la couleur bleue. L'indice zéro représente la couleur bleue. Ensuite, insérez cette condition si, je vais taper des points B. À l'intérieur des robes carrées, elle doit passer un index bleu, un index bleu, et je veux ajouter les coordonnées Ici, je vais taper point, ajouter, ajouter, soulever. Ensuite, pendant les rondes, je vais passer les coordonnées du centre. Ici pour passer au centre. Comme vous le savez, point B est une liste de decks dans lesquels sont stockés les points Je veux dire les coordonnées utilisées pour dessiner avec une couleur bleue et chacune de représente un seul trait de dessin bleu. Et l'indice bleu est un indice qui suit le trait en cours Si nous dessinons un trait de couleur bleue, il le suivra. Il est utilisé pour accéder au deck actuel en point bleu afin de stocker de nouveaux points pour le coup en cours. Et la méthode d'ajout du tour au point situé à l'avant du pont actuel en points bleus, et ici le centre représente les coordonnées des points détectés En gros, je tiens à dire que lorsque l'utilisateur dessine en bleu, le Pumram détecte en permanence la position de ce pointeur et ajoute au tableau le trait bleu actuel L'utilisation de la fonction Append Lip garantit que les points sont stockés dans l'ordre inverse, ce qui peut être utile pour une lecture et un traitement efficaces De la même manière, nous devons gérer toutes les couleurs. Donc ici, je vais taper un indice de couleur de feuille égal à cette fois où je vais en transmettre un. Alors ici, je vais taper des points G. C'est pour le vert, donc je vais taper des points G dans presses carrées (troupeau, passe, indice vert, indice vert, indice vert). la même manière, je veux ajouter un tour dans les presses rondes, je vais passer le centre Ensuite, je duplique cette section et cette fois je vais ajouter un index de couleur Je vais dépasser l'indice de couleur deux, qui représente la couleur rouge. Cette fois, je vais utiliser nos points. Je vais également changer le nom de l'index. Sans utiliser d'index vert, je vais utiliser un index rouge, un index rouge. Encore une fois, je vais reproduire cette section et nous devons gérer la couleur jaune Ici, je vais passer l'indice de couleur trois, et je vais remplacer les points par des points jaunes. Nous devons également remplacer l'index, l'index jaune. C'est ainsi que nous pouvons dessiner des formes différentes couleurs en utilisant ces conditions. Nous devons maintenant gérer ce scénario où rien n'est détecté. Je tiens à dire que nous devons maintenant ajouter le prochain dk lorsque rien n'est détecté pour éviter la Terre manquante Ici, je vais taper l'état. Voir. L'accent est alors sur l'état de santé. Ici, nous devons gérer le fait que l'application arrête de dessiner lorsque l'application indique que l'utilisateur a arrêté de dessiner, il doit alors préparer la ligne suivante Créez un nouveau ****. Pour créer un nouveau deck, nous devons également augmenter l'indice bleu Un par un, je vais créer un nouveau deck pour chaque couleur. Comme je vais incrémenter les index. Dans l'état actuel des choses, je vais d'abord m'occuper de la couleur bleue. Certains points de type B , puis je vais utiliser la méthode append point append, et je vais ajouter un nouveau dig Ensuite, à l'intérieur du laiton rond, je suis du genre à creuser. Et à l'intérieur des bretelles rondes, nous devons également indiquer la longueur maximale, la longueur maximale, ici je vais dire la longueur maximale 512, et nous devons également incrémenter l'index. Je vais donc taper index bleu plus égal à, et chaque fois que je vais incrémenter avec un, j'en ferai un De la même manière, nous devons gérer d'autres couleurs. C'est pour les points G, les couleurs vertes, et ici je vais remplacer le nom de l'index, index vert. la même manière, je vais gérer l'indice rouge, les points R. Je vais également remplacer l'index, l'index R. Ensuite, je vais m' occuper de l'index jaune. Je fais cette section et je remplace rpoint par des points jaunes et lors d'une nouvelle édition, je vais mettre à jour Je vais augmenter l'indice jaune, l'indice jaune. En gros, dans cette section, manipulez les boutons de clic Ici, nous dessinons sur Canvas. Tout d'abord, nous manipulons les boutons de clic, puis nous dessinons sur Canvas Ensuite, nous gérons ce scénario où rien ne dessine, rien n'est détecté. Et pour y remédier, nous créons un nouveau deck pour chaque couleur et nous augmentons un nouvel index pour chaque trait de couleur C'est donc tout pour ce tutoriel. Dans la partie suivante de ce didacticiel, nous allons tracer des lignes pour toutes les couleurs sur le canevas et le cadre. C'est donc tout pour ce tutoriel. Merci d'avoir regardé cette vidéo Sduned pour notre prochain tutoriel 10. Tracez des lignes pour la couleur du trait: C'est bon de vous voir, les gars. Encore une fois, je suis de retour avec une autre vidéo en lien avec ce projet. Et dans cette vidéo, nous allons tracer des lignes pour toutes les couleurs de la toile, du cadre et du cadre lumineux. Au début, je vais créer une liste, et le nom de notre variable de liste est points points, égal à, et à l'intérieur du carré, il est écrit que je vais passer les points. Et un par un, je vais mettre ces points dans cette liste. Tout d'abord, je vais passer des points B, des points bleus. Ensuite, je vais passer les points G, qui sont des points verts. Ensuite, je vais passer des points R, et enfin, je vais passer des points Y, en boucle. Elles sont toutes le moins différentes dans cette liste de points et toutes les coordonnées les moins persistantes sont regroupées par trait. Nous devons maintenant exécuter une boucle pour itérer tous les points un par un Pour cela, je vais exécuter une boucle à quatre boucles. Ici pour taper pour moi, et je vais utiliser la fonction de plage. Gamme. Dans la fonction range, je vais utiliser in function. Ligne. Dans le cadre du processus du tour, je vais passer des points. Ensuite, à l'intérieur de cette boucle automnale, ce cube itère essentiellement sur l'index des points représentant différentes couleurs, telles que le bleu, le vert, le rouge et le jaune Et maintenant, à l'intérieur de ces quatre boucles, nous devons itérer le trait à partir de ces points Pour cela, encore une fois, je vais lancer une autre boucle automnale pour J in range. À l'intérieur de la fonction range, herramuty link. Ensuite, à l'intérieur des versets ronds, je suis à égalité. Et puisque le carré est opposé, je vais passer à l'intérieur de cette boucle à quatre, maintenant à l'intérieur de cette boucle à quatre, nous devons itérer par itération les points du trait en cours Pour cela, je vais taper quatre autres boucles à portée de K à l'intérieur de la cavité ronde Au début, je vais passer le numéro d'index. Comme premier paramètre, je vais en transmettre un. Ensuite, pour accéder au coup actuel, ici la marée dans la fonction A N et à l'intérieur des cuivres ronds, je vais accumuler des points À l'intérieur des cuivres carrés, je vais d' abord passer I. Ensuite, je vais passer J. Ensuite, à l'intérieur de cette boucle automnale, mais avant, laissez-moi vous expliquer ces quatre boucles Ici, je commence par un car le code contient chaque point jusqu'au point précédent. Si K commence à zéro, il n'y aura pas de point précédent. Ensuite, à l'intérieur de ces quatre boucles, nous devons vérifier une condition. Si le point actuel ou le point précédent est nul, nous devons poursuivre ce processus. Pour cela, tapez ici les points T dans le carré par rapport au point actuel I puis dans la base carrée, J, et encore une fois, à l'intérieur du carré sis, un à K moins un est utilisation ou l'opérateur d'un héros nonne, et notre point précédent n'en est aucun, donc les points de type héros à l'intérieur du carré sis I à l'intérieur du carré sis J, et enfin, à l'intérieur du carré sis je vais passer par rapport au point actuel I puis dans la base carrée, J, et encore une fois, à l'intérieur du carré sis, un à K moins un est l'utilisation ou l'opérateur d'un héros nonne, et notre point précédent n'en est aucun, donc les points de type héros à l'intérieur du carré sis I à l'intérieur du carré sis J, et enfin, à l'intérieur du carré sis je vais passer K est nun puis dans cette condition IP, je vais taper continue. Alors je vais continuer cette boucle. Ça veut dire que Panne a été trouvée. Je passe à l'itération suivante. Cela permet d'éviter les erreurs et de garantir que le programme ne tente pas de tracer une ligne impliquant des points non valides. Ensuite, je vais tracer une ligne dans une image vidéo en direct. Pour cela, nous allons utiliser la méthode de ligne d'OpenCV. Ici, je vais taper la méthode des lignes à deux points cv. Ligne. À l' intérieur des bordures, nous devons d'abord transmettre l'image source dans laquelle je veux tracer la ligne et je vais passer le cadre de l'image Parce que nous allons tracer la limite dans une vidéo en direct. C, alors nous devons passer les points de départ pour les points de départ, je vais utiliser ce point. Ensuite, nous devons passer les points de terminaison et pour les points de terminaison, je vais passer ce Copiez les valeurs des points et je vais les mettre ici. Enfin, pour transmettre la couleur, quelle couleur nous allons utiliser, nous devons saisir la valeur de la couleur en fonction du numéro d'index. Type d'ourlet, couleurs variables , couleurs, et à l'intérieur du carré par rapport à, je vais passer, l'itération, puis pour passer épaisseur par épaisseur, je vais passer une épaisseur de deux ou deux pixels la même manière, nous allons tracer une ligne dans la fenêtre de peinture. Je duplique cette ligne et je vais remplacer le nom de la fenêtre, le nom de la source, la fenêtre de peinture, celle-ci. Je vais régler celui-ci. Maintenant, nous avons presque terminé. Nous devons maintenant montrer le Wingo à l'aide des fonctions Imago. Donc ici, je vais taper le CV deux. Nous devons d'abord le déplacer dans l' étiquette d'indentation CV à deux points ImSoma ImSo, je veux montrer notre durée de vie Et d'abord de fournir un nom de fenêtre pour ce cadre, qui est la vie. Dessin en direct. Ensuite, nous devons transmettre le nom du cadre. Le cadre que je veux montrer est le nom de notre fenêtre. Ensuite, je vais dupliquer cette ligne et cette fois, je veux montrer la fenêtre de peinture. Ici, je vais taper de la peinture. Je vais également changer le nom de la variable. Je vais remplacer le cadre par une fenêtre peinte, celle-ci. Encore une fois, je vais dupliquer cette ligne et cette fois je vais afficher la fenêtre du masque. Ici, je vais taper des masques. Je vais remplacer le masque de nom de fenêtre. Et je vais configurer ce fichier. Hé, avant d'exécuter ce code dans mon terminal, je tiens à dire que je vais utiliser cette barre de couleur pastel comme outil de suivi. Comme vous pouvez le voir, il s'agit d'une barre de couleur bleue, et comme vous le savez, par défaut, nous allons sélectionner la couleur bleue. Il va donc suivre ce pointeur. Passons maintenant à l'écran de l'ordinateur. Encore une fois, je suis de retour dans l'éditeur de code de mon studio de résultats, et je vais exécuter ce code dans mon terminal Je vais donc appuyer sur le bouton Exécuter. Après avoir appuyé sur le bouton Exécuter, comme vous pouvez le voir, la fenêtre du détecteur de couleur s'affiche d'abord . À partir de là, à l'aide de ce curseur, vous pouvez cibler n'importe quelle couleur Comme vous le savez, par défaut, nous ciblons la couleur bleue et nous devons attendre un certain temps pour démarrer la webcam. Vous pouvez maintenant voir ici qu'il a ouvert au total trois fenêtres, une fenêtre en direct, une fenêtre de peinture et une fenêtre de masque. Je vais aligner ces fenêtres côte à côte. Maintenant je vais commencer à dessiner. Ici, je prends déjà un pointeur bleu et je le cache entre mon doigt. Maintenant, je vais commencer à dessiner en l'utilisant. Comme vous pouvez le voir, notre caméra suit notre marqueur et trace une ligne. Je commence à dessiner en bleu, et vous pouvez voir le dessin dans notre fenêtre de dessin clair, vous pouvez également voir le même dessin dans notre fenêtre de peinture blanche dans notre fenêtre de masque, vous pouvez voir le masque binaire dans notre fenêtre de masque, vous pouvez remarquer qu'il ne suit que le marqueur de couleur bleue. Il ne suit rien d'autre de cette vidéo, et maintenant je vais cacher ce marqueur et commencer à dessiner à partir d'un point différent. Et je vais commencer à dessiner à partir de cette position. Vous pouvez remarquer, encore une fois, qu'il commence à tracer le chemin à partir de cette position. De cette façon, vous pouvez tracer ligne différente à une position différente. Maintenant, laissez-moi vous montrer comment pouvons-nous changer de couleur ? Comment pouvons-nous changer la couleur de cette ligne de trait ? Pour cela, nous devons déplacer le pointeur sur le bouton de couleur. Au début, je vais déplacer ce pointeur sur le bouton de couleur verte et maintenant il sélectionne la couleur verte. Si je commence à dessiner, vous pouvez maintenant le voir dessiner la ligne avec des couleurs vertes. De même, si vous souhaitez changer de couleur, vous devez placer votre marqueur sur la couleur suivante. Pour l'instant, je vais sélectionner la couleur rouge. Maintenant, il va commencer à dessiner une ligne de trait de couleur rouge. De la même manière, vous pouvez sélectionner la couleur jaune. Il vous suffit de placer votre pointeur au-dessus du bouton jaune Ensuite, vous pouvez commencer à dessiner en utilisant une ligne de couleur jaune. C'est ainsi que vous pouvez changer de couleur une par une. Et si vous souhaitez effacer cette fenêtre, vous devez déplacer votre marqueur au-dessus du bouton de la voiture. Comme vous pouvez le voir, après avoir déplacé ce marqueur au-dessus du bouton Effacer, la fenêtre est effacée. Encore une fois, vous pouvez commencer à dessiner dans ce canevas. Nous avons donc construit avec succès notre projet de dessin. Et si vous voulez clôturer ce projet, vous devez faire l'éloge du petit Q. Il va fermer les fenêtres.