Ich denke, dass openCV und PIL als Python-Bildverarbeitungsbibliotheken bekannt sind, aber ich habe angefangen, SimpleITK zu verwenden, weil ich Dicom-Bilder direkt laden möchte. Zuerst habe ich einen einfachen Code geschrieben, um ein Bild mit SimpleITK zu lesen und anzuzeigen, aber plötzlich bin ich darauf gestoßen. .. .. Wenn der Pfad des Eingabebildes Japanisch enthält (wahrscheinlich nicht Englisch?), Scheint er aufgrund des Problems des Zeichencodes nutzlos zu sein. Da SimpleITK selbst eine kleinere Bibliothek ist, wird es möglicherweise nur von wenigen Personen verwendet, aber ich werde es vorerst freigeben.
Es scheint, dass SimpleITK (http://www.simpleitk.org/) eine C ++ - basierte Bildverarbeitungsbibliothek namens ITK (https://itk.org/itkindex.html) ist, die mit Python und Java verwendet werden kann. Es wird selten zur Verarbeitung medizinischer Bilder wie CT und MRT verwendet. Da medizinische Bilder häufig in einem Format namens Dicom gespeichert werden, kann SimpleITK Dicom-Bilder direkt lesen. Die Dokumentation (https://simpleitk.readthedocs.io/en/master/index.html) ist ziemlich solide, so dass Anfänger leicht anfangen können? (Nun, ich bin plötzlich gestolpert)
Einfach mit pip zu machen.
pip install SimpleITK
Laden Sie die Bilder genau wie in der offiziellen Dokumentation "Lesen und Schreiben für Bilder und Transformationen" (https://simpleitk.readthedocs.io/en/master/Documentation/docs/source/IO.html) beschrieben. Stellen Sie jedoch sicher, dass der Pfad des Eingabebildes Japanisch enthält. Diesmal lautet der Code Lena (PNG-Format) anstelle des Dicom-Bildes.
read_image.py
import SimpleITK as sitk
file_name="C:/japanisch/Lenna_(test_image).png "#Damit funktioniert es nicht
#file_name="C:/Lenna_(test_image).png "#Funktioniert normal
reader = sitk.ImageFileReader()
reader.SetImageIO("PNGImageIO")
reader.SetFileName(file_name)
image = reader.Execute();
if ( not "SITK_NOSHOW" in os.environ ):
sitk.Show( image, "image show" )#Zeigen Sie ein Bild mit ImageJ an.
Ergebnis
Ich erhalte eine Fehlermeldung, dass die Datei nicht gefunden werden kann, wie unten gezeigt.
RuntimeError: Exception thrown in SimpleITK ImageFileReader_Execute: D:\a\1\sitk-build\ITK\Modules\IO\PNG\src\itkPNGImageIO.cxx:149:
itk::ERROR: PNGImageIO(000001A1C5886F00): PNGImageIO could not open file: C:/japanisch/Lenna_(test_image).png for reading.
Reason: Illegal byte sequence
** Gegenmaßnahme **
Wenn Sie den Pfad des Bildes so ändern, dass es kein Japanisch enthält, funktioniert es normal.
Verwenden Sie kein Chinesisch auf Ihrem Weg! Es scheint einige Leute zu geben, die besorgt sind. (https://github.com/SimpleITK/SimpleITK/issues/795 ) Der Zeichencode der Python-Zeichenfolge ist Unicode, aber die ITK-Seite argumentiert, dass der Zeichencode ASCII ist. ASCII unterstützt kein Japanisch. Wenn also die ITK-Seite nur ASCII lesen kann, müssen möglicherweise alle Pfade alphabetisch angegeben werden. .. ..
Fügen Sie bei Verwendung von SimpleITK kein Japanisch in den Pfad des Bildes ein. Ich werde es aktualisieren, wenn ich die zugrunde liegende Lösung finde.