[Traitement d'image] Poo-san est nu par détection de bord en utilisant Python et OpenCV!

introduction

Ravi de vous rencontrer! Je m'appelle Yoshiki et je me spécialise dans l'apprentissage automatique et l'apprentissage profond à l'université! Cette fois, je voudrais expliquer la détection des contours en utilisant Python et OpenCV. (C'est aussi pour approfondir ma compréhension lol) Pour le moment, je ferai de mon mieux pour m'amuser et comprendre même ceux qui se demandent ce que Python peut faire!

Qu'est-ce que la détection des contours en premier lieu?

Dans le monde du traitement d'image, le bord signifie un endroit où la luminosité change soudainement dans l'image, mais ce n'est pas très clair. À quoi pensez-vous habituellement lorsque vous entendez le mot edge? La bonne réponse est pour ceux qui pensent aux bords et aux contours! En d'autres termes, la détection des contours est une technologie qui extrait uniquement la caractéristique des contours pour faciliter le traitement de l'image!

Références https://it-mint.com/2018/11/05/feature-value-in-image-recognition-whats-edge-detection-and-spatial-filter-1839.html

environnement

Cette fois, je voulais que tout le monde bouge la main pour exécuter le programme, alors je voudrais l'implémenter en utilisant Google Drive et Google Colaboratory plutôt que localement. En guise de mérite, je l'ai choisi car il est pratique car il peut être utilisé sans installer la bibliothèque avec pip etc.

Créer un environnement

    1. Commençons par créer un compte Google! (Si vous l'avez déjà, vous pouvez l'utiliser.) Si vous le pouvez, accédez au lecteur Google et connectez-vous.
  1. Une fois que vous avez accès, sélectionnez l'élément appelé Dossier à partir du nouveau bouton en haut à gauche. Si vous cliquez dessus, un champ de saisie de nom apparaîtra. Tout va bien, mais je l'ai nommé Edge!

    1. Ensuite, je pense qu'un dossier est créé dans Mon Drive. Ensuite, allez-y et créez à nouveau les dossiers Images et Src à partir du nouveau bouton. Dans Images, vous pouvez télécharger l'image dont vous souhaitez détecter le bord ou télécharger l'image après la détection du bord. J'écrirai le code source dans Src.
  2. Eh bien, c'est presque la fin! Dans Images, mettez les images dont vous souhaitez détecter les contours! Vous pouvez le faire en téléchargeant un nouveau fichier de bouton. Dans Src, sélectionnez Google Colaboratory dans Nouveau en bas. (Sinon, recherchez et installez l'application à partir de Add!) Une fois sélectionné, vous devriez être redirigé vers l'écran de l'éditeur.

  3. Enfin, sur les spécifications de Google Colaboratory. ・ Veuillez noter que Google Colaboratory sera déconnecté dans environ 30 minutes, et s'il est déconnecté, vous devrez vous reconnecter. (Le code source ne disparaît jamais lol) ・ Lors de la connexion, il vous sera demandé le code comme indiqué ci-dessous, alors accédez à l'URL pour obtenir le code! messageImage_1605587862536.jpg

・ Par souci de clarté, changez le nom de Untitled.ipynb. -Vous pouvez enregistrer à partir de la colonne de fichiers. Gardons-le diligent!

Code source

J'étais conscient de la conception orientée objet dans son ensemble. J'ai laissé le commentaire du code de base dans les commentaires.

import cv2

#------------Setting------------#
#Setting for using google drive
from google import colab
colab.drive.mount('/content/gdrive')

#Directory setting
b_dir='gdrive/My Drive/Edge/' #Setting working directory

#Experiment setting (Parameter setting for canny operator)
min_val=100
max_val=150

#Imput file setting
t_dir=b_dir+'Images/'
data='Caca'
ext='.JPG'
org_name=t_dir+data+ext

#Output file setting
canny_name=t_dir+data+'_Canny _'+str(min_val)+'_'+str(max_val)+ext

#------------Image processing------------#

#Image read
org=cv2.imread(org_name)
if org is None:
  print('\n**********************************************************\n')
  print(org_name+' cannot be read\n')
  print('************************************************************\n')
else:
  #Grayscale image generation
  gray=cv2.cvtColor(org,cv2.COLOR_BGR2GRAY)

  #Apply image operator
  canny=cv2.Canny(gray,min_val,max_val)

  #Save image
  cv2.imwrite(canny_name,canny)

Explication (Notes)

Tout d'abord, ci-dessous, nous importons OpenCV et définissons le répertoire.

Il y a une mise en garde ici.

La dernière ligne est Edge. Cela fait référence au nom du dossier que vous avez défini en premier, alors réécrivons-le avec le nom du dossier que vous avez créé en premier.

import cv2

#------------Setting------------#
#Setting for using google drive
from google import colab
colab.drive.mount('/content/gdrive')

#Directory setting
b_dir='gdrive/My Drive/Edge/' #Setting working directory

Ensuite, dans ce qui suit, les réglages des paramètres, les réglages du fichier image et les réglages du fichier image de sortie sont effectués.

Il y a deux mises en garde ici!

Le premier point concerne les paramètres. Cette fois, nous utilisons la méthode Canny comme méthode de détection des bords. (Je n'expliquerai pas la méthode Canny dans cet article.) Ce paramètre est une valeur que j'ai définie pour pouvoir bien prendre un avantage avec cette valeur, vous êtes donc libre de le modifier. .. Le deuxième point concerne le réglage du fichier image. Je pense que vous avez téléchargé l'image dans le dossier Images, veuillez donc stocker l'image avant l'extension dans les données et l'extension dans ext.

#Experiment setting (Parameter setting for canny operator)
min_val=100
max_val=150

#Imput file setting
t_dir=b_dir+'Images/'
data='Caca'
ext='.JPG'
org_name=t_dir+data+ext

#Output file setting
canny_name=t_dir+data+'_Canny _'+str(min_val)+'_'+str(max_val)+ext

Résultat de sortie

Mounted at /content/gdrive Si c'est sorti comme ça, c'est réussi! Consultez les images de mon disque. L'image avec détection de bord doit être sortie. Ensuite, comme le titre l'indique, j'ai détecté Poo dans l'image de profil comme un bord, alors veuillez voir le résultat.

Image originale Poo

ぷーさん.JPG

Détection des bords Poo

ぷーさん_Canny _100_150.JPG

Je suis désolé ...

finalement

Vive le bon travail! Je suis content si quelqu'un a été ensemble jusqu'à présent J'espère également que cet article vous expliquera comment Python peut le faire. Comme il s'agit de mon premier message, j'ai l'intention de le faire aussi soigneusement que possible, mais si vous avez des questions, des questions ou des erreurs, veuillez commenter. Je continuerai à écrire de nombreux articles tels que l'apprentissage automatique, alors suivez-moi si vous le souhaitez!

Recommended Posts

[Traitement d'image] Poo-san est nu par détection de bord en utilisant Python et OpenCV!
[Python] Utilisation d'OpenCV avec Python (détection des bords)
J'ai essayé la détection d'objets en utilisant Python et OpenCV
[Python] Accès et recadrage des pixels d'image à l'aide d'OpenCV (pour les débutants)
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
Traitement d'image avec Python et OpenCV [Tone Curve]
Traitement d'image léger avec Python x OpenCV
traitement d'image python
Estimation de l'orientation de la tête avec Python et OpenCV + dlib
Remarques sur le traitement d'images HDR et RAW avec Python
Premier traitement d'image Python
[Ubuntu] [Python] Comparaison de la détection de visage entre dlib et OpenCV
Traitement d'image avec Python
Application de Python: Nettoyage des données Partie 3: Utilisation d'OpenCV et prétraitement des données d'image
[Jouons avec Python] Traitement d'image en monochrome et points
Détection d'image de visage similaire utilisant la reconnaissance faciale et le clustering PCA et K-means
Tirez en accéléré à partir d'une caméra PC en utilisant Python, OpenCV
Traitement d'image avec Python (partie 2)
"Traitement Apple" avec OpenCV3 + Python3
Édition d'image avec python OpenCV
Détection de caractéristiques à l'aide d'opencv (détection de coin)
[Python] Utilisation d'OpenCV avec Python (basique)
100 coups sur le traitement d'image !! (001 --010) Soigneusement et soigneusement
Traitement d'image avec Python (partie 1)
Détection des bords en temps réel avec OpenCV
Traitement d'image avec Python (3)
Détection de visage avec Python + OpenCV
Traitement d'image par python (Pillow)
Collection de traitement d'image en Python
Traitement de l'expansion et de la contraction de l'image
Utilisation du mode Python dans le traitement
Utiliser OpenCV avec Python @Mac
[Python] Traitement d'image avec scicit-image
Interpolation automatique des images avec OpenCV et Python (méthode de marche rapide, Navier-Stokes)
Créez un lot planifié simple à l'aide de l'image Python de Docker et de parse-crontab
Je viens d'effacer l'objet en utilisant la réparation d'image (inpaint) (OpenCV: Python)
Créez et essayez un environnement OpenCV et Python en quelques minutes à l'aide de Docker
Traitement d'ajout de colonne de fichier Excel et de suppression de ligne à l'aide de Python Openpyxl
Alignement d'images numérisées de papier vidéo animé à l'aide d'OpenCV et de Python
Traitement de détection de sommets unidimensionnel et bidimensionnel
Construction d'environnement de python et opencv
Briller la vie avec Python et OpenCV
Traitement parallèle Python (multitraitement et Joblib)
Réseau neuronal avec OpenCV 3 et Python 3
Jugement de l'image rétroéclairée avec OpenCV
Notes personnelles pour le traitement d'images python
Traitement d'image avec la binarisation Python 100 knocks # 3
Grattage écologique grâce au traitement d'image
Clustering et visualisation à l'aide de Python et CytoScape
Traitement de lignes horizontales à l'aide de la transformation de morphologie OpenCV
mappe de traitement de chaîne python et lambda
Trouver la similitude d'image avec Python + OpenCV
100 traitement d'image par Python Knock # 2 Échelle de gris
Introduction à l'analyse d'image opencv python
Créer une lecture de feuille de notes avec Python OpenCV (Conseils pour bien lire)
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python