count_relationcount_relationCountRelationCountRelation (Operator)

Name

count_relationcount_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)

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

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

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

static Hlong HSystem::CountRelation(const wchar_t* RelationName)   (Nur Windows)

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

static int HSystem.CountRelation(string relationName)

Beschreibung

count_relationcount_relationCountRelationCountRelationCountRelation liefert die Anzahl NumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesnumOfTuples der Einträge in der Relation RelationNameRelationNameRelationNameRelationNamerelationName der HALCON-Datenbank ab dem Zeitpunkt, an dem die Datenbank mit dem Parameter 'database'"database""database""database""database" von set_systemset_systemSetSystemSetSystemSetSystem 'database'"database""database""database""database" eingeschaltet wurde. Ist die Datenbank ausgeschaltet, ist NumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesnumOfTuples 0. Zusätzlich wird in diesem Fall eine Warnung ausgegeben, falls 'do_low_error'"do_low_error""do_low_error""do_low_error""do_low_error" über set_systemset_systemSetSystemSetSystemSetSystem gesetzt ist. Der Zustand der Datenbank kann über den Parameter 'database'"database""database""database""database" mit get_systemget_systemGetSystemGetSystemGetSystem erfragt werden.

Die HALCON-Datenbank ist aus fünf Tabellen ikonischer Datentypen aufgebaut, genannt Relationen. Die Einträge in diese Relationen 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 Containerrelationen für HALCON-Objekte und HALCON-Tupel (Objekt-Array). 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 ein Tupel in der Regionendatenrelation (wie eine Region) und zusätzlich aus einem oder mehreren Zeigern auf Tupel der Bildmatrixrelation. Mehrkanalbilder haben mehrere Zeiger auf Bildmatrix-Tupel.

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 von mehreren Objekten gemeinsam verwendet. So kann es beispielsweise mehr Bilder als Bildmatrizen geben. Relevant für den Speicherbedarf sind nur die drei Basisrelationen 'image'"image""image""image""image", 'region'"region""region""region""region" und 'XLD'"XLD""XLD""XLD""XLD". 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 RelationNameRelationNameRelationNameRelationNamerelationName:

'image':

Bildermatrizen. Dabei kann die selbe Matrix auch Bestandteil mehrerer Bilder sein (keine redundante Speicherung).

'region':

Regionendaten. Dabei kann eine Region auch Bestandteil mehrerer Bildobjekte sein (keine redundante Speicherung).

'XLD':

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

'object':

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

Achtung

Das Sammeln von Informationen für die Datenbank ist nicht thread-safe, wenn iconisch Objekte zwischen den Threads ausgetauscht werden, d.h. wenn Objekte in einem anderen Therad zerstört werden als in dem sie erzeugt wurden.

Ausführungsinformationen

Parameter

RelationNameRelationNameRelationNameRelationNamerelationName (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Interessierende Relation der HALCON-Datenbank.

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

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

NumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesnumOfTuples (output_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Anzahl der Tupel in der Relation.

Beispiel (HDevelop)

* Close the graphics window in order to close the graphics stack,
* which would influence the measurement.
dev_close_window ()
* Enable the measurement.
set_system ('database','true')
*
count_relation ('image', I1)
count_relation ('region', R1)
count_relation ('XLD', X1)
count_relation ('object', O1)
count_relation ('tuple', T1)
*
* Result:
* I1 = 0
* R1 = 0
* X1 = 0
* O1 = 0
* T1 = 0
*
read_image (Patras, 'patras')
*
count_relation ('image', I2)
count_relation ('region', R2)
count_relation ('XLD', X2)
count_relation ('object', O2)
count_relation ('tuple', T2)
*
* I2 = 3  (three channels of the rgb image 'patras')
* R2 = 1  (the image domain of the image 'patras')
* X2 = 0  (no XLD data)
* O2 = 1  (the iconic object holding the channels and the domain)
* T2 = 0  (no empty object or object array )

Ergebnis

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

Vorgänger

reset_obj_dbreset_obj_dbResetObjDbResetObjDbResetObjDb

Nachfolger

set_systemset_systemSetSystemSetSystemSetSystem

Siehe auch

clear_objclear_objClearObjClearObjClearObj

Modul

Foundation