| Operatoren |
count_relation — Ermitteln der Anzahl der Einträge in der HALCON-Datenbank.
count_relation( : : RelationName : NumOfTuples)
count_relation zählt die Anzahl der Einträge in einer der fünf Relationen der HALCON-Datenbank ab dem Zeitpunkt, an dem die Datenbank durch den Operator set_system mit Hilfe des Parameterwertes 'database' eingeschaltet wurde. Ist die Datenbank ausgeschaltet, wird die Anzahl 0 zurückgegeben. Zusätzlich wird in diesem Fall eine Warnung ausgegeben, falls 'do_low_erromultimediar' mit Hilfe des Operators set_system eingeschatet ist. Der Zustand der Datenbank kann über den Parameterwert 'database' des Operators get_system erfragt werden.
Die HALCON-Datanbank ist aus fünf Tabellen ikonischer Datentypen aufgebaut, genannt Relationen. Die Einträge in diese Ralationen werden allgemein Tupel genannt (nicht zu verwechseln mit einem HALCON-Tupel, was ein Objekt-Array bezeichnet). Ist die HALCON-Datenbank eingeschaltet, beinhaltet sie die Basisrelationen für Regionendaten, Bildmatrizen und XLDs, sowie die Kontainerrelationen für HALCON-Objekte und HALCON-Tupel. Die HALCON-Objekte Region und Bild werden aus den Elementen der Regionendaten und Bildmatrix-Relationen aufgebaut: Eine Region besteht aus einem Zeiger auf ein Tupel in der Regionendatenrelation. Ein Bild besteht aus einem Zeiger auf eine Tupel in der Regionendatenrelation (wie eine Region) und zusätzlich aus einem oder mehreren Zeigern auf Tupel der Bildmatrixrelation. Sind mehrere Zeiger auf Bildmatrixtupel vorhanden, wird ein solches Bild als mehrkanaliges Bild bezeichnet.
Regionen und Bilder werden als Objekte bezeichnet. Man kann eine Region als den Spezialfall eines Bildes auffassen, das keine Bildmatrizen hat. Regionendaten und Bildmatrizen werden in HALCON aus Speicherplatzgründen üblicherweise nicht kopiert. Die Tupel der beiden Relationen können viel mehr von mehreren Objekten gemeinsam verwendet werden. So kann es beispielsweise mehr Bilder als Bildmatrizen geben. Relevant für den Speicherbedarf sind nur die drei Basisrelationen. Die HALCON-Objekte (Regionen und Bilder) und HALCON-Tupel bestehen nur aus Verweisen auf Regionen- und Matrixdaten und benötigen deshalb nur wenige Byte Speicher.
Mögliche Werte für RelationName:
Bildermatrizen. Dabei kann eine Matrix durchaus Bestandteil mehrerer Bilder sein (keine redundante Speicherung).
Regionendaten (immer vorhanden sind die volle und die leere Region). Dabei kann eine Region natürlich Bestandteil mehrerer Bildobjekte sein (keine redundante Speicherung).
eXtended Line Description: Konturen, Polygone, Parallele, Linen etc. XLD Daten haben keine Grauwerte und sind subpixel genau.
HALCON-Objekte. Aufgebaut aus einer Region und optional einer oder mehrerer Bildmatrizen. Ein HALCON-Objekt bestehend aus einer Region wird Regionen-Objekt, mit zusätzlichen Bildmatrizen Bildobjekt bezeichnet.
Im Kompaktmodus werden Tupel von Bildobjekten unter einem Surrogat in dieser Relation gespeichert. Statt mit den einzelnen Objektschlüsseln wird dann nur mehr mit diesem Schlüssel gearbeitet. Es hängt von der Wirtssprache ab, ob die Objekte einzeln (z.B. C++) oder als Tupel (z.B. C) übergeben werden.
Gewisse Datenbank-Objekte werden bereits von reset_obj_db angelegt und müssen daher immer vorhanden sein (die undefinierte Grauwertkomponente, die Objekte 'full' (FULL_REGION in HALCON/C) und 'empty' (EMPTY_REGION in HALCON/C) sowie die darin enthaltene leere und volle Region). reset_obj_db erscheint dementsprechend bei einem Aufruf von get_channel_info auch als 'creator' der vollen und leeren Region. Der Operator count_relation dient beispielsweise dazu, den die Vollständigkeit von clear_obj Operation zu überprüfen.
Interessierende Relation der HALCON-Datenbank.
Defaultwert: 'object'
Werteliste: 'XLD', 'image', 'object', 'region', 'tuple'
Anzahl der Tupel in der Relation.
set_system ('database', 'true')
reset_obj_db(512,512,3)
count_relation('image',I1)
count_relation('region',R1)
count_relation('XLD',X1)
count_relation('object',O1)
count_relation('tuple',T1)
read_image(X,'monkey')
count_relation('image',I2)
count_relation('region',R2)
count_relation('XLD',X2)
count_relation('object',O2)
count_relation('tuple',T2)
set_system ('database', 'false')
*
* Result: I1 = 0
* R1 = 1 (empty region)
* X1 = 0 (no XLD data)
* O1 = 1 (empty objects)
* T1 = 0 (always 0 in normal mode )
* I2 = 1 ('monkey' image)
* R2 = 2 (empty region and full region)
* X2 = 0 (no XLD data)
* O2 = 3 (empty region, full region, image X)
* T2 = 0
Ist der Parameter korrekt, dann liefert count_relation den Wert 2 (H_MSG_TRUE). Ansonsten wird eine Fehlerbehandlung ausgeführt.
Foundation
| Operatoren |