KlassenKlassenKlassenKlassen | | | | Operatoren

count_relationcount_relationCountRelationcount_relationCountRelationCountRelation (Operator)

Name

count_relationcount_relationCountRelationcount_relationCountRelationCountRelation — Ermitteln der Anzahl der Einträge in der HALCON-Datenbank.

Signatur

count_relation( : : RelationName : NumOfTuples)

Herror count_relation(const char* RelationName, Hlong* NumOfTuples)

Herror T_count_relation(const Htuple RelationName, Htuple* NumOfTuples)

Herror count_relation(const HTuple& RelationName, Hlong* NumOfTuples)

void CountRelation(const HTuple& RelationName, HTuple* NumOfTuples)

static Hlong HSystem::CountRelation(const HString& RelationName)

static Hlong HSystem::CountRelation(const char* RelationName)

void HOperatorSetX.CountRelation(
[in] VARIANT RelationName, [out] VARIANT* NumOfTuples)

Hlong HSystemX.CountRelation([in] BSTR RelationName)

static void HOperatorSet.CountRelation(HTuple relationName, out HTuple numOfTuples)

static int HSystem.CountRelation(string relationName)

Beschreibung

count_relationcount_relationCountRelationcount_relationCountRelationCountRelation 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_systemset_systemSetSystemset_systemSetSystemSetSystem mit Hilfe des Parameterwertes 'database'"database""database""database""database""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'"do_low_erromultimediar""do_low_erromultimediar""do_low_erromultimediar""do_low_erromultimediar""do_low_erromultimediar" mit Hilfe des Operators set_systemset_systemSetSystemset_systemSetSystemSetSystem eingeschatet ist. Der Zustand der Datenbank kann über den Parameterwert 'database'"database""database""database""database""database" des Operators get_systemget_systemGetSystemget_systemGetSystemGetSystem 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 RelationNameRelationNameRelationNameRelationNameRelationNamerelationName:

'image':

Bildermatrizen. Dabei kann eine Matrix durchaus Bestandteil mehrerer Bilder sein (keine redundante Speicherung).

'region':

Regionendaten (immer vorhanden sind die volle und die leere Region). Dabei kann eine Region natürlich Bestandteil mehrerer Bildobjekte sein (keine redundante Speicherung).

'XLD':

eXtended Line Description: Konturen, Polygone, Parallele, Linen etc. XLD Daten haben keine Grauwerte und sind subpixel genau.

'object':

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.

'tuple':

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_dbreset_obj_dbResetObjDbreset_obj_dbResetObjDbResetObjDb 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_dbreset_obj_dbResetObjDbreset_obj_dbResetObjDbResetObjDb erscheint dementsprechend bei einem Aufruf von get_channel_infoget_channel_infoGetChannelInfoget_channel_infoGetChannelInfoGetChannelInfo auch als 'creator' der vollen und leeren Region. Der Operator count_relationcount_relationCountRelationcount_relationCountRelationCountRelation dient beispielsweise dazu, den die Vollständigkeit von clear_objclear_objClearObjclear_objClearObjClearObj Operation zu überprüfen.

Parallelisierung

Parameter

RelationNameRelationNameRelationNameRelationNameRelationNamerelationName (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Interessierende Relation der HALCON-Datenbank.

Defaultwert: 'object' "object" "object" "object" "object" "object"

Werteliste: 'XLD'"XLD""XLD""XLD""XLD""XLD", 'image'"image""image""image""image""image", 'object'"object""object""object""object""object", 'region'"region""region""region""region""region", 'tuple'"tuple""tuple""tuple""tuple""tuple"

NumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesnumOfTuples (output_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Anzahl der Tupel in der Relation.

Beispiel (HDevelop)

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

Ergebnis

Ist der Parameter korrekt, dann liefert count_relationcount_relationCountRelationcount_relationCountRelationCountRelation den Wert 2 (H_MSG_TRUE). Ansonsten wird eine Fehlerbehandlung ausgeführt.

Vorgänger

reset_obj_dbreset_obj_dbResetObjDbreset_obj_dbResetObjDbResetObjDb

Nachfolger

set_systemset_systemSetSystemset_systemSetSystemSetSystem

Siehe auch

clear_objclear_objClearObjclear_objClearObjClearObj

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren