Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 2 Verarbeiten Sie mehrere Dateien

Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden

Als nächstes werde ich den Inhalt für Python-Anfänger schreiben, um mit dem Beispiel von Scikit-image mit einer geringfügigen Änderung zu spielen.

Fahren wir als Beispiel mit Normalized Cut fort.

sphx_glr_plot_ncut_001.png

Verarbeiten Sie dieses Beispiel für verschiedene Bilder. Zunächst wird dieses Beispiel so gezeigt, wie es ist.

.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()

** Hinweis: Erfahren Sie, wie Sie eine Funktion erstellen. ** ** **

Wenn Sie diesen Vorgang für verschiedene Eingabebilder verarbeiten möchten, Überlegen Sie, was Sie eingeben, was Sie tun und was Sie zurückgeben möchten. Lassen Sie uns vorerst das für das Bild zu verarbeitende Teil zu einer Funktion machen. Japanische Übersetzung der Python-Standarddokumentation 4.6. Funktionen definieren

Ein Beispiel nach der Funktionalisierung

.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)

Wie wär es damit? Zur Funktionalisierung def Funktionsname (Argument): Einrückter Code

Wenn Sie gerne schreiben, können Sie es vorerst zu einer Funktion machen. Die Tatsache, dass Einrückungen Teil der Steuerungssyntax sind, kann für einen Anfänger in Python verwirrend sein. Sie müssen keinen Rückgabewert schreiben, es sei denn, Sie geben einen Wert zurück. ,

** Hinweis: Verwenden Sie für den Namen in glob.glob ("* .jpg "), um mit mehreren Dateien zu arbeiten. ** ** **

Skript nach dem Umschreiben

.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)

Die for-Anweisung ist eine Steuerungssyntax zum Verarbeiten von Daten wie Listen nacheinander.

python


for name in names:
    print name

Und so weiter. Weitere Informationen finden Sie in der folgenden Bibliothek. Python-Standardbibliothek 4.2. Für Anweisung

Python-Standardbibliothek glob - Erweiterung des Pfadnamenmusters im Unix-Stil

Da die Funktion mit def plotNcut (img): definiert ist, ist die Beschreibung in der for-Anweisung einfach. cv2.waitKey (100) gibt eine Wartezeit an, damit die Anzeige besser sichtbar ist.

** Hinweis: Nehmen wir den Rahmen des Videos heraus und verarbeiten ihn **

768x576.avi sind die Videodaten, die in der Distribution von OpenCV enthalten sind. Lassen Sie uns Normalized Cut mit diesem Video ausführen. OpenCV-Python verfügt über cv2.VideoCapture (), mit dem das Bild jedes Frames aus dem Video extrahiert werden kann. (Wenn Sie die Kameranummer als Argument angeben, können Sie Bilder von der USB-Kamera importieren.)

Lassen Sie uns zunächst überprüfen, ob die Videowiedergabe mit einem vorhandenen Skript erfolgt. OpenCV-Tutorials Erste Schritte mit Videos Wenn Sie dies versuchen und das Video nicht abgespielt wird, ist cap.isOpend () wahrscheinlich von Anfang an falsch. Eine häufige Situation ist, dass der Python-Interpreter keine DLL wie opencv_ffmpeg2411.dll gefunden hat.

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.

Es gibt also bitte überprüfen Sie die Lösung im Web. (Wenn Sie OpenCV 2.4.11 verwenden, öffnen Sie openCV 2.4.11 cv2.pyd in (Python-Verzeichnis) / Lib / site-packages / Ersetzen mit. Kopieren Sie außerdem opencv_ffmpeg2411.dll und fügen Sie es an der Position des Skripts ein, sodass ffmpeg einen Pfad hat. )

Skript nach dem Umschreiben

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
        

Beachten Sie den Teil, der sich auf die durch cap = cv2.VideoCapture (Name) festgelegte variable Obergrenze bezieht. Die Methoden von isOpened () und read () sind OpenCV-Python Tutorials Getting Started with Videos Wie es im Beispiel von geschrieben steht.

Ein Beispiel für ein Eingabebild und ein Ergebnisbild org_0000.pngimg_0000.png

Herausforderung: Edge-Operatoren mit cv2.VideoCapture () Schreiben wir ein Programm, das das Beispiel von verarbeitet.

sphx_glr_plot_edge_filter_001.png

Entwicklung

Neben glob.glob (Dateimuster) ist os.walk () eine weitere Möglichkeit, die zu verarbeitende Datei zu finden. Sie können nach Dateien suchen, während Sie Verzeichnisse in einer hierarchischen Verzeichnisstruktur verschieben. (Dies ist eine Funktion, die ich oft benutze) os.walk(top, topdown=True, onerror=None, followlinks=False) Python-Standardbibliothek Betriebssystem - verschiedene Betriebssystemschnittstellen

** Nachtrag: Liste der gemischten Dateien **

Ein weiteres Muster für die Verarbeitung mehrerer Dateien ist die Verarbeitung aus der Dateiliste. Je nach Prozess kann es erforderlich sein, die Datei mit einer Zufallszahl auszuwählen. Mischen Sie im folgenden Beispiel Zeilen aus der Dateiliste und wählen Sie nur 100 Zeilen aus. Kann verarbeitet werden.

python


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

Tipp 3 In Datei schreiben


Wenn Sie Python 3.4 oder höher haben, sollten Sie os.path wegwerfen und pathlib verwenden

Recommended Posts

Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 2 Verarbeiten Sie mehrere Dateien
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 6 Verbessern Sie den Python-Code
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 7 Erstellen eines Moduls
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 8 Verarbeitungszeitmessung und Profiler
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 4 Verwenden Sie die GUI
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 3 Schreiben Sie in eine Datei
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 5 In Netzwerk-Apps integrieren
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Der schnellste Weg für Anfänger, um Python zu beherrschen
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Web Scraping für Anfänger in Python (1)
Web Scraping für Anfänger in Python (4) -1
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
[Beispiel für eine Python-Verbesserung] Was ist die empfohlene Lernseite für Python-Anfänger?
[Python] Organisieren der Verwendung für Anweisungen
Verwendung von "deque" für Python-Daten
Tipps für diejenigen, die verwirrt sind, wie man is und == in Python verwendet
Verwendung der C-Bibliothek in Python
So verwenden Sie MkDocs zum ersten Mal
Python für Super-Anfänger Super-Anfänger Python # Einfach loszuwerden
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
Memo Nr. 3, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Verwenden Sie vorerst Logger mit Python
Memo Nr. 1, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Verwendung von Datenanalysetools für Anfänger
Tipps zum Erreichen der ATND-API mit Python
Verwenden Sie ein Kryptografiemodul, das OpenSSL in Python verarbeitet
Der einfachste Weg, OpenCV mit Python zu verwenden
Versuchen Sie, RPN mit Python zu berechnen (für Anfänger)
[Algorithmus x Python] Verwendung der Liste
Verwenden Sie das Python-Framework "cocotb", um Verilog zu testen.
Memo Nr. 2, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
So erhalten Sie die Dateien im Ordner [Python]
Memo Nr. 7, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Einführung in die Programmierung (Python) TA Tendenz für Anfänger
Memo Nr. 6 für Python-Anfänger zum Lesen von "Detaillierte Erklärung der Python-Grammatik"
Wie man Python für Anfänger schneller macht [numpy]
~ Tipps für Python-Anfänger mit Liebe von Pythonista ② ~
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
Web Scraping für Anfänger in Python (1) Verbesserte Version
So konvertieren Sie den Python # -Typ für Super-Anfänger von Python: str
[Für Anfänger] So studieren Sie den Python3-Datenanalysetest
Verwendung von Raspeye Relay Module Python
[Python] Lokal → Verfahren zum Hochladen von Dateien in S3 (boto3)
Ich wollte die Python-Bibliothek von MATLAB verwenden
[Python] Verwendung der Diagrammerstellungsbibliothek Altair
[Python] So teilen und modularisieren Sie Dateien (einfach, Beispiel)
Geben Sie MinGW als den in Python verwendeten Compiler an
[Einführung in die Udemy Python3 + -Anwendung] 27. Verwendung des Wörterbuchs
[Einführung in die Udemy Python3 + -Anwendung] 30. Verwendung des Sets
Verwendung des in Lobe in Python erlernten Modells
Python # So überprüfen Sie Typ und Typ für Super-Anfänger
Ich möchte R-Datensatz mit Python verwenden
Web-Scraping für Anfänger mit Python (4) --2 Scraping auf Cloud Shell