Ich habe ein unkomprimiertes dicom-Video von einem Ultraschallgerät erstellt. Jetzt möchte ich es Frame für Frame in einer Python-Anwendung lesen und vorerst die Datei speichern. Später möchte ich etwas Bildverarbeitung hinzufügen. Bisher habe ich versucht, die zum ersten Frame gehörenden Bytes zu extrahieren.Unkomprimiertes Bild aus Byte-Array lesen
import dicom
import array
from PIL import Image
filename = 'image.dcm'
img = dicom.read_file(filename)
byte_array = array.array('B', img.PixelData[0:(img.Rows * img.Columns)])
Wie bekomme ich jetzt dieses Bytearray in eine Datei (Bitmap, JPEG was auch immer)? Ich habe versucht, die Python-Bild-Bibliothek mit image = Image.fromarray(byte_array)
, aber habe einen Fehler.
AttributeError: 'str' object has no attribute 'array_interface'
Ich denke, irgendwo muss ich auch die Abmessungen des Bildes angeben, aber habe nicht herausgefunden, wie.
Ich weiß nicht viel über Python, aber ich hatte vor kurzem zu einem Thread gepostet mit einem ähnlichen Thema beschäftigen, vielleicht finden Sie, dass nützlich: http: //stackoverflow.com/questions/37847414/viewing-dicom -image-with-bokeh/37936986 # 37936986 –
Versuchen Sie die Größe des Arrays zuerst zu ändern, um den Bildabmessungen zu entsprechen; http://stackoverflow.com/questions/7694772/turning-a-large-matrix-into-a-grayscale-image. Ich würde die Frame-Zeile, die Spalten, die Byte-Größe und die Frame-Anzahl ausgeben, um Ihre Quelle zu bestätigen, bevor Sie sich über die Ausgabe Gedanken machen. –