Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 2 Traiter plusieurs fichiers

Conseils aux débutants Python pour utiliser l'exemple Scikit-image pour eux-mêmes

Ensuite, j'écrirai le contenu pour que les débutants en Python puissent jouer avec l'exemple de Scikit-image avec une légère modification.

Continuons avec Normalized Cut comme exemple.

sphx_glr_plot_ncut_001.png

Envisagez de traiter cet exemple pour différentes images. Tout d'abord, cet exemple est montré tel quel.

.py:plot_ncut.py


from skimage import data, io, segmentation, color
from skimage.future import graph
from matplotlib import pyplot as plt


img = data.coffee()

labels1 = segmentation.slic(img, compactness=30, n_segments=400)
out1 = color.label2rgb(labels1, img, kind='avg')

g = graph.rag_mean_color(img, labels1, mode='similarity')
labels2 = graph.cut_normalized(labels1, g)
out2 = color.label2rgb(labels2, img, kind='avg')

plt.figure()
io.imshow(out1)
plt.figure()
io.imshow(out2)
io.show()

** Astuce: découvrez comment créer une fonction. ** **

Si vous souhaitez traiter ce processus pour diverses images d'entrée, Pensez à ce qu'il faut saisir, à ce qu'il faut faire et à ce qu'il faut retourner. Pour le moment, faisons de la partie à traiter pour l'image img une fonction. Traduction japonaise de la documentation standard Python 4.6. Définition des fonctions

Un exemple après fonctionnalisation

.py:plot_ncut_ex1.py


from skimage import data, io, segmentation, color
from skimage.future import graph
from matplotlib import pyplot as plt

def plotNcut(img):
    labels1 = segmentation.slic(img, compactness=30, n_segments=400)
    out1 = color.label2rgb(labels1, img, kind='avg')
    
    g = graph.rag_mean_color(img, labels1, mode='similarity')
    labels2 = graph.cut_normalized(labels1, g)
    out2 = color.label2rgb(labels2, img, kind='avg')
    
    plt.figure()
    io.imshow(out1)
    plt.figure()
    io.imshow(out2)
    io.show()

img = data.coffee()
plotNcut(img)

Et ça? Pour la fonctionnalisation def nom de la fonction (argument): Code en retrait

Si vous écrivez comme, vous pouvez en faire une fonction pour le moment. Le fait que l'indentation fasse partie de la syntaxe de contrôle peut être déroutant pour un débutant complet en Python. Vous n'avez pas besoin d'écrire une valeur de retour de retour, sauf si vous renvoyez une valeur. ,

** Astuce: utiliser pour le nom dans glob.glob ("* .jpg "): pour travailler avec plusieurs fichiers. ** **

Script après réécriture

.py:plot_ncut_ex2.py


from skimage import data, io, segmentation, color
from skimage.future import graph
from matplotlib import pyplot as plt

def plotNcut(img):
    labels1 = segmentation.slic(img, compactness=30, n_segments=400)
    out1 = color.label2rgb(labels1, img, kind='avg')
    
    g = graph.rag_mean_color(img, labels1, mode='similarity')
    labels2 = graph.cut_normalized(labels1, g)
    out2 = color.label2rgb(labels2, img, kind='avg')
    
    plt.figure(1)
    io.imshow(out1)
    plt.figure(2)
    io.imshow(out2)
    io.show()

import cv2
import glob
for name in glob.glob("*.png "):
    img = cv2.imread(name)
    plotNcut(img)
    cv2.waitKey(100)

L'instruction for est une syntaxe de contrôle pour traiter des données telles que des listes une par une.

python


for name in names:
    print name

Etc. Veuillez consulter la bibliothèque suivante pour plus de détails. Bibliothèque standard Python 4.2. Pour instruction

Bibliothèque standard Python glob - Extension de modèle de chemin d'accès de style Unix

Puisque la fonction est définie avec def plotNcut (img):, la description dans l'instruction for est simple. cv2.waitKey (100) donne un temps d'attente pour rendre l'affichage plus facile à voir.

** Astuce: sortons le cadre de la vidéo et traitons-le **

768x576.avi sont les données vidéo incluses dans la distribution d'OpenCV. Exécutons la coupe normalisée en utilisant cette vidéo. OpenCV-Python a cv2.VideoCapture (), qui peut extraire l'image de chaque image de la vidéo. (Si vous donnez le numéro de la caméra comme argument, vous pouvez importer des images depuis la caméra USB.)

Tout d'abord, vérifions si la lecture vidéo est faite avec un script existant. Tutoriels OpenCV Premiers pas avec les vidéos Si vous essayez ceci et que la vidéo ne joue pas, il est probable que cap.isOpend () soit False depuis le début. Une situation courante est que l'interpréteur python n'a pas trouvé de DLL telle que opencv_ffmpeg2411.dll.

Note Make sure proper versions of ffmpeg or gstreamer is installed. Sometimes, it is a headache to work with Video Capture mostly due to wrong installation of ffmpeg/gstreamer.

Il y en a, alors veuillez vérifier la solution sur le Web. (Si vous utilisez OpenCV 2.4.11, openCV 2.4.11 cv2.pyd dans (répertoire Python) / Lib / site-packages / Remplacer par. Copiez également opencv_ffmpeg2411.dll et collez-le à l'emplacement du script afin que ffmpeg ait un chemin. )

Script après réécriture

python


from skimage import data, io, segmentation, color
from skimage.future import graph
from matplotlib import pyplot as plt

import cv2


def plotNcut(img):    
    labels1 = segmentation.slic(img, compactness=30, n_segments=200)
    out1 = color.label2rgb(labels1, img, kind='avg')
    
    g = graph.rag_mean_color(img, labels1, mode='similarity')
    labels2 = graph.cut_normalized(labels1, g)
    out2 = color.label2rgb(labels2, img, kind='avg')

    return out1, out2

name = "768x576.avi"
cap = cv2.VideoCapture(name)
i = -1
while cap.isOpened():
    i += 1
    ret, img = cap.read()
    if i % 10 != 0:
        continue
    if ret != True:
        break
    [h, w] = img.shape[:2]
    img = cv2.resize(img, (w/2, h/2))
    out1, out2 = plotNcut(img)
    cv2.imshow("img", out1)
    cv2.waitKey(100)
    print i
        

Remarquez la partie liée à la variable cap définie par cap = cv2.VideoCapture (nom). Les méthodes de isOpened () et read () sont OpenCV-Python Tutorials Getting Started with Videos Comme il est écrit dans l'exemple de.

Un exemple d'image d'entrée et d'image de résultat org_0000.pngimg_0000.png

Défi: Opérateurs Edge en utilisant cv2.VideoCapture () Écrivons un programme qui traite l'exemple de.

sphx_glr_plot_edge_filter_001.png

développement

En plus de glob.glob (modèle de fichier), il existe os.walk () pour trouver le fichier à traiter. Vous pouvez rechercher des fichiers tout en déplaçant des répertoires dans une structure de répertoires hiérarchique. (C'est une fonctionnalité que j'utilise souvent) os.walk(top, topdown=True, onerror=None, followlinks=False) Bibliothèque standard Python os - interfaces de système d'exploitation diverses

** Addendum: liste de fichiers aléatoire **

Un autre modèle de traitement de plusieurs fichiers consiste à traiter à partir de la liste de fichiers. Selon le processus, il peut être nécessaire de sélectionner le fichier avec un nombre aléatoire. Dans l'exemple suivant, mélangez les lignes de la liste de fichiers et sélectionnez-en seulement 100 lignes. Peut être traité.

python


lines = open("filelist.txt", "rt").readlines()
random.shuffle(lines)
for line in lines[:100]:
    p = line.strip()
    print p

Astuce 3 Écrire dans un fichier


Pour Python 3.4 ou version ultérieure, vous devez supprimer os.path et utiliser pathlib

Recommended Posts

Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 2 Traiter plusieurs fichiers
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image par eux-mêmes
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 6 Améliorer le code Python
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 7 Comment créer un module
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 8 Mesure du temps de traitement et profileur
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 4 Utiliser l'interface graphique
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 3 Écrire dans un fichier
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 5 Incorporer dans les applications réseau
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
Le moyen le plus rapide pour les débutants de maîtriser Python
[Pour les débutants] Comment utiliser la commande say avec python!
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Je ne savais pas comment utiliser l'instruction [python] for
Web scraping pour les débutants en Python (1)
Web scraping pour les débutants en Python (4) -1
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
[Exemple d'amélioration de Python] Quel est le site d'apprentissage recommandé pour les débutants en Python?
[Python] Organisation de l'utilisation des instructions
Comment utiliser "deque" pour les données Python
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
Comment utiliser la bibliothèque C en Python
Comment utiliser MkDocs pour la première fois
Python pour les super débutants Super débutants Python # Facile à éliminer
Spécifiez le fichier exécutable Python à utiliser avec virtualenv
Mémo n ° 3 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Utilisez Logger avec Python pour le moment
Mémo n ° 1 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Comment utiliser les outils d'analyse de données pour les débutants
Conseils pour accéder à l'API ATND avec Python
Utilisez un module de cryptographie qui gère OpenSSL en Python
Le moyen le plus simple d'utiliser OpenCV avec python
Essayez de calculer RPN avec Python (pour les débutants)
[Algorithm x Python] Comment utiliser la liste
Utilisez le framework Python "cocotb" pour tester Verilog.
Mémo n ° 2 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Comment obtenir les fichiers dans le dossier [Python]
Mémo n ° 7 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Introduction à la programmation (Python) TA Tendency pour les débutants
Mémo n ° 6 pour les débutants Python à lire "Explication détaillée de la grammaire Python"
Comment rendre le Python des débutants plus rapide [numpy]
~ Conseils pour les débutants de Python donnés avec amour par Pythonista ② ~
[Pour les débutants] Web scraping avec Python "Accédez à l'URL de la page pour obtenir le contenu"
[BigQuery] Comment utiliser l'API de BigQuery pour Python -Création de table-
Web scraping pour les débutants en Python (1) Version améliorée
Comment convertir le type Python # pour les super débutants de Python: str
[Pour les débutants] Comment étudier le test d'analyse de données Python3
Comment utiliser Raspeye Relay Module Python
[Python] Local → Procédure de téléchargement de fichiers vers S3 (boto3)
Je voulais utiliser la bibliothèque Python de MATLAB
[Python] Comment utiliser la bibliothèque de création de graphes Altair
[Python] Comment fractionner et modulariser des fichiers (simple, exemple)
Spécifiez MinGW comme compilateur utilisé dans Python
[Introduction à Udemy Python3 + Application] 27. Comment utiliser le dictionnaire
[Introduction à Udemy Python3 + Application] 30. Comment utiliser l'ensemble
Comment utiliser le modèle appris dans Lobe en Python
Python # Comment vérifier le type et le type pour les super débutants
Je veux utiliser le jeu de données R avec python
Scraping Web pour débutants avec Python (4) --2 Scraping sur Cloud Shell