Je pense qu'openCV et PIL sont réputés comme bibliothèques de traitement d'images pour python, mais j'ai commencé à utiliser SimpleITK parce que je veux charger directement des images dicom. Tout d'abord, j'ai écrit un code simple pour lire et afficher une image à l'aide de SimpleITK, mais je suis soudainement tombé dessus. .. .. De la conclusion, si le japonais (probablement pas l'anglais?) Est inclus dans le chemin de l'image d'entrée, cela semble inutile en raison du problème du code de caractère. Étant donné que SimpleITK lui-même est une bibliothèque mineure, peu de gens peuvent l'utiliser, mais je vais la partager pour le moment.
Il semble que SimpleITK (http://www.simpleitk.org/) soit une bibliothèque de traitement d'images basée sur C ++ appelée ITK (https://itk.org/itkindex.html) qui peut être utilisée avec python et Java. Il est rarement utilisé pour traiter des images médicales telles que la tomodensitométrie et l'IRM. Les images médicales étant souvent stockées dans un format appelé dicom, SimpleITK peut lire directement les images dicom. La documentation (https://simpleitk.readthedocs.io/en/master/index.html) est assez solide, il est donc facile pour les débutants de se lancer? (Eh bien, j'ai soudainement trébuché)
Facile à faire avec pip.
pip install SimpleITK
Chargez les images exactement comme décrit dans la documentation officielle "Lecture et écriture pour les images et les transformations" (https://simpleitk.readthedocs.io/en/master/Documentation/docs/source/IO.html). Cependant, assurez-vous que le chemin de l'image d'entrée inclut le japonais. Cette fois, le code consiste à lire Lena (format png) au lieu de l'image dicom.
read_image.py
import SimpleITK as sitk
file_name="C:/Japonais/Lenna_(test_image).png "#Ça ne marche pas avec ça
#file_name="C:/Lenna_(test_image).png "#Fonctionne normalement
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" )#Affichez une image avec ImageJ.
résultat
Je reçois un message d'erreur indiquant que le fichier est introuvable, comme indiqué ci-dessous.
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:/Japonais/Lenna_(test_image).png for reading.
Reason: Illegal byte sequence
** Contre-mesure **
Si vous modifiez le chemin de l'image pour qu'elle n'inclut pas le japonais, cela fonctionne normalement.
N'utilisez pas le chinois sur votre chemin! Il semble y avoir des gens qui s'inquiètent. (https://github.com/SimpleITK/SimpleITK/issues/795 ) Le code de caractère de la chaîne python est unicode, mais le côté ITK soutient que le code de caractère est ASCII. ASCII ne prend pas en charge le japonais, donc quand il s'agit du fait que le côté ITK ne peut lire que l'ASCII, il peut être nécessaire de rendre tous les chemins alphabétiques. .. ..
Lorsque vous utilisez SimpleITK, n'incluez pas le japonais dans le chemin de l'image. Je le mettrai à jour lorsque je trouverai la solution sous-jacente.
Recommended Posts