Traitement d'image avec Python (partie 1)

Jusqu'à présent, j'utilisais ImageJ, R, Matlab, etc. pour le traitement d'images, mais j'ai essayé quelque chose avec Python (+ OpenCV).

Installation de Python

Comme la dépendance de la bibliothèque est gênante, j'apprécierai d'installer anaconda avec homebrew ici.

% brew cask install anaconda

Pour Windows, utilisez chocolatey pour faire choco installer anaconda3. Après avoir installé anaconda, installez OpenCV en utilisant le système d'emballage d'anaconda.

% conda install --channel https://conda.anaconda.org/menpo opencv3

Démarrez jupyter et vérifiez qu'OpenCV est installé. 20160830001.jpg

jupyter est trop pratique. Je veux installer anaconda juste pour jupyter. Je veux l'utiliser avec perl et R.

Charger et afficher des images

La base de données est scott / tiger emp et l'image du visage humain est Lenna.

À la recherche de Lenna

Tout d'abord, téléchargez l'image 4.2.04.tiff depuis SPI Image Database. En termes de droit d'auteur, il s'écrit "Scans d'images de magazines. Le droit d'auteur appartient à l'éditeur ou au photographe original." Si vous avez installé des outils de traitement d’image à l’avance, essayez de trouver / usr / local -name «Lenna.tiff» -type f -print, et il peut être enregistré dans un répertoire de manière inattendue.

Affichage de l'image

Vous pouvez découvrir comment charger et afficher des images à l'aide d'OpenCV en consultant la Documentation OpenCV. C'est pourquoi je vais l'essayer sur le notebook Jupyter. En outre, cv2.waitKey (0) puis cv2.destroyAllWindows (), mais cela signifie attendre l'entrée de la clé pendant 0 millisecondes, et 0 seconde dans ce cas signifie "aucune heure spécifiée", c'est-à-dire "tout le temps" Cela semble signifier "attendre la prochaine entrée de clé". En d'autres termes, l'instruction de garder la fenêtre d'image ouverte jusqu'à ce qu'il y ait une entrée clé.

import numpy as np
import cv2
import os.path
lenna = "4.2.04.tiff"
if os.path.exists(lenna):
    img = cv2.imread(lenna)
    cv2.imshow("Lenna", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

20160830002.jpg

Si vous voulez en savoir plus sur cette Lenna, regardez img.shape ou img.size.

Binarisation d'images

Si vous regardez OpenCV Tutorial, vous trouverez le code pour la binarisation, alors faisons-le.

J'ai essayé de mettre une ligne pour vérifier s'il y a un fichier image en faisant os.path.exiss ().

De plus, comme dans le didacticiel, l'image est affichée à l'aide de matplotlib.

import cv2
import numpy as np
import os.path
from matplotlib import pyplot as plt
lenna = "4.2.04.tiff"

if os.path.exists(lenna):
    img = cv2.imread(lenna,0)
    img = cv2.medianBlur(img, 5)
    ret, th1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
    th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
    th3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THERSH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
    
    titles = ['Original Image', 'Global Thresholding (v = 127)', 'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
    images = [img, th1, th2, th3]

    for i in range(0, 4):
        plt.subplot(2, 2, i+1), plt.imshow(images[i], 'gray')
        plt.title(titles[i])
        plt.xticks([]), plt.yticks([])

    plt.show()

20160830003.jpg

De même, essayez la binarisation à l'aide de la méthode Otsu. Le code est pratiquement inchangé.

import cv2
import numpy as np
import os.path
from matplotlib import pyplot as plt
lenna = "4.2.04.tiff"
if os.path.exists(lenna):
    img = cv2.imread(lenna,0)
    img = cv2.medianBlur(img,5)
    ret,th = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    cv2.imshow("Lenna", th)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

20160830004.jpg

C'est pourquoi j'ai pu faire les bases pour le moment.

Ce code

Recommended Posts

Traitement d'image avec Python (partie 1)
Traitement d'image avec Python (3)
Traitement d'image avec Python
[Python] Traitement d'image avec scicit-image
traitement d'image python
Traitement d'image avec la binarisation Python 100 knocks # 3
100 traitement d'image par Python Knock # 2 Échelle de gris
Bases du traitement d'images binarisées par Python
Traitement d'image par Python 100 knock # 10 filtre médian
Traitement d'image avec MyHDL
100 traitement d'image avec Python Knock # 8 Max Pooling
Premier traitement d'image Python
100 traitements de langage avec Python (chapitre 2, partie 2)
Traitement d'image par Python 100 knock # 12 motion filter
100 traitements de langage avec Python (chapitre 2, partie 1)
Dessin avec Matrix-Reinventor of Python Image Processing-
Traitez facilement des images en Python avec Pillow
Traitement d'image avec Python 100 knocks # 7 pooling moyen
Traitement d'image léger avec Python x OpenCV
Traitement d'image par Python 100 knock # 9 Filtre Gaussien
Traitement d'image avec PIL
Traitement d'image à partir de zéro avec python (5) Transformation de Fourier
Traitement d'image à partir de zéro avec python (4) Extraction de contour
Traitement d'image avec la configuration de l'environnement Python pour Windows
100 coups de traitement du langage avec Python 2015
Etudier Python avec freeCodeCamp part1
Images en bordure avec python Partie 1
Traitement d'image avec PIL (Pillow)
"Traitement Apple" avec OpenCV3 + Python3
Grattage avec Selenium + Python Partie 1
Édition d'image avec python OpenCV
Traitement du signal acoustique avec Python (2)
Traitement du signal acoustique avec Python
Tri des fichiers image avec Python (3)
Etudier Python avec freeCodeCamp part2
Tweet avec image en Python
Tri des fichiers image avec Python
Résolution de Nampre avec Python (partie 2)
Traitement d'image par python (Pillow)
Collection de traitement d'image en Python
Grattage avec Selenium + Python Partie 2
Remarques sur le traitement d'images HDR et RAW avec Python
Découpez une image avec python
Principes de base du traitement d'image en temps réel avec opencv
Jouez des nombres manuscrits avec Python Partie 1
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
[Python] Traitement parallèle facile avec Joblib
[Automatisé avec python! ] Partie 1: fichier de configuration
100 traitements de langage avec Python
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
100 traitements de langage avec Python (chapitre 3)
Notes personnelles pour le traitement d'images python
Faisons du scraping d'images avec Python
Trouver la similitude d'image avec Python + OpenCV
Automatisez des tâches simples avec Python Part0
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers
Envoyer l'image avec python et enregistrer avec php
Génération d'images dégradées avec Python [1] | np.linspace
[Jouons avec Python] Traitement d'image en monochrome et points
[Traitement d'image] Postérisation