Transcription
1. VUE D'ENSEMBLE: Bonjour. Dans cette classe, vous allez créer un scanner de documents simple à l'aide la bibliothèque OpenCV et de Python. Cela peut être utile, par
exemple, pour numériser des
pages d'un livre. m'appelle Yassin et je
serai votre instructeur
dans ce cours. Je programme
depuis 2019. Et je suis l'auteur du vlog. Ne répétez pas yourself.org,
où j'ai plus de 5 000 développeurs
par mois pour en savoir
plus sur Python, l'apprentissage
automatique
et la vision par ordinateur. Maintenant, pour construire nos projets, nous devons convertir
l'image d'entrée en gris et
trouver les bords de l'image à
l'aide d'
un détecteur de bord
astucieux. Ensuite, nous pouvons utiliser ces bords pour trouver les contours de l'image. Et à partir de là, nous
ne sélectionnerons que les contours
du document. Enfin, nous pouvons
appliquer ce que nous appelons la
perspective professionnelle pour obtenir une vue du
haut vers le bas du document, n'hésitez pas à consulter
la description du cours et j'ai hâte de vous voir
à l'intérieur.
2. Installation: La première chose
à faire est d'installer les packages nécessaires
pour le traitement des images. Nous allons donc installer
OpenCV et le non pi. Commençons par OpenCV, ouvrons une nouvelle
fenêtre de terminal et exécutons la commande pip,
installons OpenCV Polygon. Dans mon cas, vous pouvez voir que j'
ai ouvert CV déjà installé. Exigence, déjà satisfaite. Mais je veux juste créer
un environnement virtuel. Ainsi, le trio peut voir ce que vous
obtenez lorsque vous l'avez installé. Environnement virtuel, ou vous
pouvez être bloqué sur le réseau. Maintenant, installons Open CV. CV. Vous pouvez voir ici qu'
OpenCV a été
installé avec succès avec un
CV ouvert sans tube. Je n'ai donc pas besoin de l'installer. Ici. Vous pouvez voir que
j'ai ouvert CV 4.54.5, l'
inversion d'OpenCV et
la division de non pi est de 1.22.1. Nous devons installer
d'autres packages. La première est que je suis un paquet de
mutagènes, et nous avons également besoin d'une barre latérale, qui est nécessaire pour le style ionique. Vous pouvez voir ici que les
PI ont la version 0.51.4. Nous saurons que le roman Some Soapy est la version 1.37.
3. Charger l'image: Nous allons donc importer Open CV et nous pouvons lire notre CV
image au point. Et redimensionnons également notre image. Nous allons donc dire outil CV,
lot, redimensionner l'image. Ici, nous allons dire
largeur et hauteur. Pour ce qui est de l'avancement, nous définirons
notre largeur et notre hauteur. Disons 600 pour la
largeur et 800 pour la hauteur. Définissons également la couleur verte. On peut donc dire que le vert
est égal à 2550. Maintenant le point de l'image, nous voulons utiliser ces
cheveux et
obtenir une vue de haut en bas
de ce document ici.
4. Traitement d'image: Nous pouvons maintenant commencer à
traiter notre image. Nous allons donc commencer par
le convertir en niveaux de gris. Ensuite, nous appliquerons
un flou gaussien. On peut écrire, bien. I est égal à CV à l' image couleur de la
série D, CB2, couleur BGR à gris. Et ici, nous allons lire le flou gaussien
CB2. Enfin, nous pouvons détecter les bords à l'aide du détecteur
Canny. Nous allons donc voir V2 point
Carney, notre image. Et disons 75 pour le premier seuil et 200
pour le second seuil. Maintenant, nous pouvons afficher
notre image CB2 point, j'en suis sûr, message. Et nous pouvons également
afficher l'image. Alors on y va, voici notre image
originale et notre image.
5. Utilisez les bords pour trouver tous les contours: Nous pouvons maintenant passer
à l'étape suivante, qui consiste à trouver et à
dessiner les contours. Nous pouvons donc utiliser la fonction CB2 point find contours pour
trouver les contours. Nous pouvons donc dire des contours
à des contours ponctuels CB2. Et ici, nous fournissons le
comté ou l'image. Ici, pour le mode de récupération, on peut dire CV deux
points trois listes. Et pour la méthode d'
approximation, on peut dire le symbole des produits Jane. Nous pouvons maintenant afficher notre
image, puis dessiner
les contours, puis réafficher notre image
avec les contours. On peut donc dire CV à
note, je suis sûr image. Et ici, nous allons
dessiner les contours. Nous fournissons notre image, nos contours et le point négatif pour tout faire
sur les contours. Ensuite, vous pouvez utiliser
la couleur verte. Et trois pour l'épaisseur. Voyons ce que nous allons faire jusqu'ici. C'est donc notre image et ce sont les contours, pas
un gentleman sur l'image.
6. Sélectionnez uniquement les bords du document: Ensuite, nous devons trouver le
plus grand contour de l'image. Voici donc ce contour, parce que ce
sera notre document. Nous pouvons donc trier nos contours par zone, du
plus grand au plus petit. Nous pouvons utiliser la fonction sorted, qui est une fonction
Python intégrée. Nous pouvons donc écrire ici, les contours sont égaux à triés. Nous voulons donc ici trier nos
contours et spécifier l'aire de nos contours à l'
aide de la fonction de zone de
contour CV 2D. Et nous voulons également les trier
du plus grand au plus petit. Nous pouvons donc écrire ici, inverse est égal à vrai. Donc, dans cette liste, nous aurons les contours les
plus grands en premier que le plus petit
à la fin de la liste. Ensuite, ce que nous pouvons
faire est de parcourir cette
liste de contours. Ensuite, nous verrons des
partenaires sur chaque contour. Ensuite, si nous trouvons un
contour à quatre points, nous pouvons supposer que nous avons trouvé notre document afin de
sortir de la boucle. Nous pouvons donc écrire
ici pour le contour. Contours. Maintenant, pour approximer le contour, nous pouvons d'abord calculer
son périmètre en utilisant le CV de la fonction de
longueur de l'arc. Nous pouvons donc écrire que le périmètre
est égal à c v2 point r. Et ici nous
fournissons notre contour. Et plus le second
argument est éloigné, nous dirons vrai pour indiquer que le
contour est fermé. Nous pouvons maintenant approximer notre contour à
l'aide de la fonction CV to approx, poly D p. Ainsi, nous pouvons écrire le flux égal à Cv dans la valeur approximative de Pauly D p. et nous fournissons ici notre contour. Ensuite, nous devons spécifier la précision de l'
approximation. On peut dire 0,05 fois le
périmètre du contour. Et l'en-tête. On peut dire vrai pour indiquer
que le contour est fermé. Nous pouvons maintenant vérifier si le contour approximatif
comporte quatre points. Nous pouvons donc écrire si la longueur de notre approximation
est égale à quatre. Ce que nous pouvons faire est donc de stocker
notre contour dans une variable. Supposons que les contours du document soient conformes à
notre approximation. Et maintenant, nous pouvons
sortir de la boucle.
7. Appliquer la perspective de mise en place pour obtenir la vue supérieure du document: Nous sommes maintenant prêts à obtenir la vue de haut en bas
de notre document. Pour cela, nous avons la fonction
de
transformation en quatre points du package IM mutants. Nous devons donc d'abord
importer notre fonction. Donc, du point de vue
des utilitaires, on peut dire quatre points fois un. Désormais, vous n'avez plus à vous soucier
trop de cette fonction. Ce que vous devez savoir, c'est qu'il prend une image et
un contour en entrée, et qu'il renvoie la
vue de haut en bas de l'image. Nous pouvons donc écrire ici, warped est égal à quatre
points transformés. Et ici, nous transmettons
notre image d'origine, mais ici nous avons déjà le
génome sur notre image. Donc, ce que nous pouvons faire, c'est
prendre une copie de notre image. Nous pouvons donc dire que l'image café est un appel à notre copie point de l'image
originale. Et maintenant, nous pouvons sortir la
copie de notre image originale. Nous dirons donc que l'image
copie la tête. Nous avons nos contours et nous les
remodelons quatre par deux. Et enfin, nous pouvons
afficher notre image, CB2 point, j'en suis sûr. Nous dirons sur l'
image et sur le déformé. Et nous allons également le
redimensionner pour obtenir la même
taille que notre image. Nous allons donc dire CV pour
redimensionner notre image déformée. Et nous utiliserons la largeur et la hauteur de notre image
d'origine. Alors on y va. Voici notre point de vue. Maintenant, vous pouvez voir que la
qualité n'est pas très bonne. Et c'est parce que nous
utilisons une résolution plus faible, qui est de 600 par une tangente. Maintenant, si vous utilisez la taille
d'origine de l'image, vous obtiendrez bien sûr
de meilleurs résultats.