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 Sie mit [Normalisierter Schnitt] fort (http://scikit-image.org/docs/dev/auto_examples/segmentation/plot_ncut.html#normalized-cut).
Wird auf der Tagesordnung stehen.
In [Tipps 2 für Python-Anfänger, das Scikit-Bildbeispiel für sich selbst zu verwenden und mehrere Dateien zu verarbeiten] konnten wir verschiedene Bilder verarbeiten.
Möglicherweise sind Sie jedoch unzufrieden, da die Ergebnisse nicht so wie sie sind in der Datei gespeichert werden können.
Daher möchte ich Ihnen einige Tipps zum Speichern in einer Datei geben.
cv2.imwrite("out.png ", img) OpenCV-Python Tutorials >> Getting Started with Images
python
for i in range(len(names)):
img = cv2.imread(names[i])
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
oname = "gray_%04d.png " % i
cv2.imwrite(oname, gray)
Die Funktion, die der Formatierung von prinft () / sprinft () / fprintf () in der Sprache C entspricht, lautet Python-Standardbibliothek / String-Format-Operation Es ist in.
os.path.dirname() os.path.basename() os.path.splitext() os.path.join()
Python-Standardbibliothek / os.path - allgemeine Pfadnamenoperation
Wenn das Ausgabezielverzeichnis odir nicht vorhanden ist Es ist üblich, ein Verzeichnis wie folgt zu erstellen:
python
if not os.path.isdir(odir):
os.makedirs(odir)
Python-Standardbibliothek / Betriebssystem - verschiedene Betriebssystemschnittstellen
os.makedirs (Pfad [, Modus]) Rekursive Verzeichniserstellungsfunktion. Ähnlich wie mkdir (), erstellt jedoch alle Zwischenverzeichnisse, die zum Erstellen des Blattverzeichnisses erforderlich sind.
oname = os.path.join(odir, "img_%05d.png " % i) Wenn Sie das Ausgabeverzeichnis in den Ausgabedateinamen wie einfügen Sie können in ein anderes Verzeichnis als das Skriptausführungsverzeichnis ausgeben.
Der Name der Ausgabedatei kann auch aus dem Namen der Eingabedatei durch die Ersetzungsfunktion generiert werden. Die Zeichenfolge verfügt über eine replace () -Methode, die die ersetzte Zeichenfolge als Rückgabewert zurückgibt. replace(old, new[, count]) Python-Standardbibliothek / Zeichenfolgenmethoden
Mit diesen Funktionen können Sie den Namen der Ausgabezieldatei frei festlegen.
"Hinweis: Verarbeiten wir mehrere Dateien mit dem Namen in glob.glob (" * .jpg "):" Versuchen wir, das Ergebnis anhand des in gezeigten Beispiels in einer Datei zu speichern. Bedingung: Erstellen Sie ein Ausgabezielverzeichnis "out" und speichern Sie die Datei dort. Bedingung: Speichern Sie die Eingabe "image.jpg " unter dem Dateinamen "out / image_ncut.png ".
Sie sollten in der Lage sein, mit den bisher gegebenen Hinweisen zu codieren. Genießen Sie die OpenCV-Python-, Scikit-Image- und Scikit-Learn-Bibliotheken, auch wenn Sie Python noch nicht kennen.
https://docs.python.jp/3/library/pathlib.html Scheint besser zu sein.
python
# -*- coding: utf-8 -*-
# pylint: disable=C0103
import pathlib
from skimage import io, segmentation, color
from skimage.future import graph
def plotNcut(img):
"""
img: color img
"""
labels1 = segmentation.slic(img, compactness=30, n_segments=400)
g = graph.rag_mean_color(img, labels1, mode='similarity')
labels2 = graph.cut_normalized(labels1, g)
return color.label2rgb(labels2, img, kind='avg'), labels2
if __name__ == "__main__":
oDir = pathlib.Path("out")
if not oDir.is_dir():
oDir.mkdir()
for p in pathlib.Path("../images").glob("*.png "):
print(p)
oname = oDir.joinpath(p.with_suffix(".jpg ").name)
img = io.imread(p)
out, _ = plotNcut(img)
io.imsave(str(oname), out)
print(oname)
Recommended Posts