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.