read_imageread_imageReadImageReadImage (Operator)

Name

read_imageread_imageReadImageReadImage — Einlesen eines Bildes mit unterschiedlichen Dateiformaten.

Signatur

read_image( : Image : FileName : )

Herror read_image(Hobject* Image, const char* FileName)

Herror T_read_image(Hobject* Image, const Htuple FileName)

void ReadImage(HObject* Image, const HTuple& FileName)

void HImage::HImage(const HTuple& FileName)

void HImage::HImage(const HString& FileName)

void HImage::HImage(const char* FileName)

void HImage::HImage(const wchar_t* FileName)   (Nur Windows)

void HImage::ReadImage(const HTuple& FileName)

void HImage::ReadImage(const HString& FileName)

void HImage::ReadImage(const char* FileName)

void HImage::ReadImage(const wchar_t* FileName)   (Nur Windows)

static void HOperatorSet.ReadImage(out HObject image, HTuple fileName)

public HImage(HTuple fileName)

public HImage(string fileName)

void HImage.ReadImage(HTuple fileName)

void HImage.ReadImage(string fileName)

Beschreibung

Der Operator read_imageread_imageReadImageReadImageReadImage liest die angegebenen Bilddateien vom Hintergrundspeicher und erzeugt daraus ein Bild. Es können ein oder mehrere Dateinamen in FileNameFileNameFileNameFileNamefileName angegeben werden. In letzterem Fall wird ein Bildobjekttupel mit entsprechend vielen Elementen zurückgegeben.

HALCON-Formate (HOBJ und IMA)

Bei Dateien im HALCON-Iconic-Object-Format (HOBJ) werden Multi-Bild-Dateien als Bildobjekttupel zurückgegeben. Falls die HOBJ-Datei zusätzlich noch andere Objekt-Typen (Regionen oder XLDs) enthält, wird ein Fehler erzeugt. Die Beschreibung des Operators write_objectwrite_objectWriteObjectWriteObjectWriteObject enthält weitere Informationen über das HOBJ-Format.

Alle Bilddateien, die mit write_imagewrite_imageWriteImageWriteImageWriteImage (Format 'ima') geschrieben werden, haben die Extension '.ima'".ima"".ima"".ima"".ima". Zu jedem Bild im IMA-Format kann eine Beschreibungsdatei vorhanden sein (gleicher Dateiname mit Extension '.exp'".exp"".exp"".exp"".exp"). Der Typ der Pixeldaten ('byte'"byte""byte""byte""byte", 'int4'"int4""int4""int4""int4", 'real'"real""real""real""real") wird ebenfalls der Beschreibungsdatei entnommen. Ist diese Beschreibungsdatei nicht vorhanden, so wird der Typ 'byte'"byte""byte""byte""byte" als Voreinstellung verwendet, genau wie die Standardwerte für die Datengröße ('width'"width""width""width""width" x 'height'"height""height""height""height") die mit get_systemget_systemGetSystemGetSystemGetSystem abgefragt werden können. Wenn die Datengröße der '.ima'".ima"".ima"".ima"".ima"-Datei nicht mit der Standardgröße übereinstimmt, wird eine Fehlerbehandlung durchgeführt.

Andere Formate

Neben dem HALCON-Format können auch TIFF, GIF, BMP, JPEG, JPEG-XR JPEG-2000, PNG, PCX, SUN-Raster, PGM, PPM, PBM und XWD Dateien eingelesen werden. Die Grauwerte bei PBM-Bildern werden auf Werte 0 und 255 gesetzt. Die Dateiformate werden entweder an der Extension (soweit angegeben) oder aufgrund der inneren Struktur der Dateien erkannt. Bei Angabe der Extension wird das Bild schneller gefunden. Wird keine Extension angegeben, werden Dateien mit Extension (sofern vorhanden) Dateien ohne Extension vorgezogen. Bei PGM, PPM und PBM kann die jeweilige Extension (z.B. 'pgm'"pgm""pgm""pgm""pgm") oder auch allgemein 'pnm'"pnm""pnm""pnm""pnm" verwendet werden. Bei TIFF ist 'tiff'"tiff""tiff""tiff""tiff" und 'tif'"tif""tif""tif""tif" zulässig. Bei JPEG-XR Dateien sind die Endungen 'jxr'"jxr""jxr""jxr""jxr", 'wdp'"wdp""wdp""wdp""wdp", 'wmp'"wmp""wmp""wmp""wmp" und 'hdp'"hdp""hdp""hdp""hdp" erlaubt. Bei JPEG-2000 Dateien ist nur die Endung 'jp2'"jp2""jp2""jp2""jp2" zulässig. Bei Farbbildern wird ein Bild mit drei Farbkanälen erzeugt, wobei der Rotkanal in der ersten, der Grünkanal in der zweiten und der Blaukanal in der dritten Komponente (Kanalnummer) abgelegt wird.

Im Falle der Bildformate TIFF, PNG und JPEG-2000 werden binäre Alphakanäle als Domänen interpretiert. Bei TIFF-Dateien werden zusätzlich binäre SubIFDs mit PhotometricInterpretation = TransparencyMask als Domänen interpretiert. Ansonsten wird die Domäne des erzeugten Bildobjektes maximal (= alle Bildpunkte der Matrix) gewählt.

Bei TIFF-Dateien werden Multi-Page-Dateien als Bildobjekttupel zurückgegeben.

Bilder des Typs 'int8' können nur auf 64-Bit-Systemen gelesen werden. Außerdem unterstützen nur die Formate IMA und TIFF diesen Bildtyp.

Bilddateien werden im aktuellen Verzeichnis und im Bilderverzeichnis von HALCON (vorgegeben durch die Umgebungsvariablen) gesucht. Das Bilderverzeichnis von HALCON ist in einer unixartigen Umgebung auf '.'".""."".""." und '/usr/local/halcon/images'"/usr/local/halcon/images""/usr/local/halcon/images""/usr/local/halcon/images""/usr/local/halcon/images" voreingestellt und kann mit dem Befehl set_systemset_systemSetSystemSetSystemSetSystem gesetzt werden. Es kann mehr als ein Bilderverzeichnis angegeben werden. Dies geschieht, indem man die einzelnen Verzeichnisse durch einen Doppelpunkt trennt.

Weiterhin kann der Suchpfad mit der Environment-Variablen HALCONIMAGES gesetzt werden (gleicher Aufbau wie bei 'image_dir'"image_dir""image_dir""image_dir""image_dir"). Beispiel:

setenv HALCONIMAGES "/usr/images:/usr/local/halcon/images"

Ebenso sucht HALCON die Bilder in dem Unterverzeichnis 'images'"images""images""images""images" (Bilder für die Programmbeispiele). Für das HALCON-Verzeichnis wird die Environment-Variable HALCONROOT verwendet.

Achtung

Falls CMYK oder YCCK JPEG/JPEG-XR-Dateien gelesen werden, nimmt HALCON an, dass diese Dateien der Konvention von Adobe Photoshop folgen, gemäß der die CMYK-Kanäle invertiert gespeichert sind, d.h. 0 repräsentiert 100% Druckfarbe und nicht 0%, wie man es eigentlich erwarten würde. Die Bilder werden gemäß dieser Konvention in RGB-Bilder umgewandelt. Falls die JPEG-Dateien nicht dieser Konvention folgen und die CMYK-Kanäle in der üblichen Weise abgespeichert sind, muss invert_imageinvert_imageInvertImageInvertImageInvertImage nach dem Einlesen des Bildes aufgerufen werden.

Beim Lesen von PNG-Dateien mit Alphakanal wird der Alphakanal als zweiter bzw. vierter Kanal des Ausgabebildes zurückgegeben, außer der Alpha-Kanal enthält genau zwei verschiedene Grauwerte. In diesem Fall wird ein ein- oder dreikanaliges Bild mit eingeschränktem Definitionsbereich zurückgegeben, in dem die Punkte des Definitionsbereiches den Pixeln des Alpha-Kanals mit dem höheren der zwei Grauwerte entspricht.

Ausführungsinformationen

Parameter

ImageImageImageImageimage (output_object)  image(-array) objectHImageHImageHobject * (byte / direction / cyclic / int1 / complex / int2 / uint2 / vector_field / int4 / int8 / real)

Eingelesenes Bild.

FileNameFileNameFileNameFileNamefileName (input_control)  filename.read(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Name des einzulesenden Bildes.

Defaultwert: 'printer_chip/printer_chip_01' "printer_chip/printer_chip_01" "printer_chip/printer_chip_01" "printer_chip/printer_chip_01" "printer_chip/printer_chip_01"

Wertevorschläge: 'fabrik'"fabrik""fabrik""fabrik""fabrik", 'fuse'"fuse""fuse""fuse""fuse", 'mreut'"mreut""mreut""mreut""mreut", 'multiple_dies_01'"multiple_dies_01""multiple_dies_01""multiple_dies_01""multiple_dies_01", 'particle'"particle""particle""particle""particle", 'patras'"patras""patras""patras""patras", 'printer_chip/printer_chip_01'"printer_chip/printer_chip_01""printer_chip/printer_chip_01""printer_chip/printer_chip_01""printer_chip/printer_chip_01", 'rings_and_nuts'"rings_and_nuts""rings_and_nuts""rings_and_nuts""rings_and_nuts", 'tooth_rim'"tooth_rim""tooth_rim""tooth_rim""tooth_rim"

Dateiendung: .hobj, .ima, .tif, .tiff, .gif, .bmp, .jpg, .jpeg, .jp2, .jxr, .png, .pcx, .ras, .xwd, .pbm, .pnm, .pgm, .ppm

Beispiel (HDevelop)

* Reading an image:
  read_image(Image,'mreut')

* Reading 3 images into an image array:
  read_image(Images,['ic0','ic1','ic2'])

* Setting of search path for images on '/mnt/images' and '/home/images':
  set_system('image_dir','/mnt/images:/home/images')

Beispiel (C)

/* Reading an image: */
  read_image(&Image,"mreut");

/* Reading 3 images into an image array: */
  Htuple Files;
  create_tuple(&Files,3);
  set_s(Files,"ic0",0);
  set_s(Files,"ic1",1);
  set_s(Files,"ic2",2);
  T_read_image(&Images,Files);

/* Setting of search path for images on '/mnt/images' and '/home/images': */
  set_system("image_dir","/mnt/images:/home/images");

Beispiel (HDevelop)

* Reading an image:
  read_image(Image,'mreut')

* Reading 3 images into an image array:
  read_image(Images,['ic0','ic1','ic2'])

* Setting of search path for images on '/mnt/images' and '/home/images':
  set_system('image_dir','/mnt/images:/home/images')

Beispiel (HDevelop)

* Reading an image:
  read_image(Image,'mreut')

* Reading 3 images into an image array:
  read_image(Images,['ic0','ic1','ic2'])

* Setting of search path for images on '/mnt/images' and '/home/images':
  set_system('image_dir','/mnt/images:/home/images')

Beispiel (HDevelop)

* Reading an image:
  read_image(Image,'mreut')

* Reading 3 images into an image array:
  read_image(Images,['ic0','ic1','ic2'])

* Setting of search path for images on '/mnt/images' and '/home/images':
  set_system('image_dir','/mnt/images:/home/images')

Ergebnis

Sind die Parameter korrekt, dann liefert read_imageread_imageReadImageReadImageReadImage den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

disp_imagedisp_imageDispImageDispImageDispImage, thresholdthresholdThresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, count_channelscount_channelsCountChannelsCountChannelsCountChannels, decompose3decompose3Decompose3Decompose3Decompose3, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNorm, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, fill_interlacefill_interlaceFillInterlaceFillInterlaceFillInterlace, zoom_image_sizezoom_image_sizeZoomImageSizeZoomImageSizeZoomImageSize, zoom_image_factorzoom_image_factorZoomImageFactorZoomImageFactorZoomImageFactor, crop_partcrop_partCropPartCropPartCropPart, write_imagewrite_imageWriteImageWriteImageWriteImage, rgb1_to_grayrgb1_to_grayRgb1ToGrayRgb1ToGrayRgb1ToGray

Alternativen

read_sequenceread_sequenceReadSequenceReadSequenceReadSequence

Siehe auch

set_systemset_systemSetSystemSetSystemSetSystem, write_imagewrite_imageWriteImageWriteImageWriteImage

Modul

Foundation