ClassesClassesClassesClasses | | | | Operators

count_relationcount_relationCountRelationcount_relationCountRelationCountRelation (Operator)


count_relationcount_relationCountRelationcount_relationCountRelationCountRelation — Number of entries in the HALCON database.


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)


The operator count_relationcount_relationCountRelationcount_relationCountRelationCountRelation counts the number of entries in one of the five relations of the HALCON database since the database was switched on by the value 'database'"database""database""database""database""database" of the operator set_systemset_systemSetSystemset_systemSetSystemSetSystem. If the database was disabled, the number 0 will be returned and a warning will be raised if value 'do_low_error'"do_low_error""do_low_error""do_low_error""do_low_error""do_low_error" of operator set_systemset_systemSetSystemset_systemSetSystemSetSystem is enabled. The state of the database can be queried by the parameter value 'database'"database""database""database""database""database" of the operator get_systemget_systemGetSystemget_systemGetSystemGetSystem.

The HALCON database is organized in five tables called relations. The single entries in this relations are called tuples, generally (not to mix up with HALCON tuples naming object arrays). If enabled, the HALCON database contains the basic relations for region-data, image-matrices and XLDs, as well as the container relations for HALCON objects and HALCON tuples. The HALCON objects region and image are constructed from elements from these two relations: a region consists of a pointer to a tuple in the region-data relation. An image consists also of a pointer to a tuple in the region-data relation (like a region) and additionally of one or more pointers to tuples in the matrix relation. If there is more than one matrix pointer, the image is called a multi-channel image.

Both regions and images are called objects. A region can be considered as the special case of an iconic object having no image matrices. For reasons of an efficient memory management, the tuples of the region-data relation and the image-matrix relation will be used by different objects together. Therefore there may be for example more images than image matrices. Only the two lowlevel relations are of relevance to the memory consumption. Image objects (regions as well as images) consist only of references on region and matrix data and therefore only need a couple of bytes of memory.

Possible values for RelationNameRelationNameRelationNameRelationNameRelationNamerelationName:


Image matrices. One matrix may also be the component of more than one image (no redundant storage).


Regions (the full and the empty region are always available). One region may of course also be the component of more than one image object (no redundant storage).


eXtended Line Description: Contours, Polygons, paralles, lines, etc. XLD data types don't have gray values and are stored with subpixel accuracy.


Iconic objects. Composed of a region (called region) and optionally image matrices (called image).


In the compact mode, tuples of iconic objects are stored as a surrogate in this relation. Instead of working with the individual object keys, only this tuple key is used. It depends on the host language, whether the objects are passed individually (e.g., C++) or as tuples (e.g., C).

Certain database objects will be created already by the operator reset_obj_dbreset_obj_dbResetObjDbreset_obj_dbResetObjDbResetObjDb and therefore have to be available all the time (the undefined gray value component, the objects 'full' (FULL_REGION in HALCON/C) and 'empty' (EMPTY_REGION in HALCON/C) as well as the herein included empty and full region). By calling get_channel_infoget_channel_infoGetChannelInfoget_channel_infoGetChannelInfoGetChannelInfo, the operator therefore appears correspondingly also as 'creator' of the full and empty region. The operator can be used for example to check the completeness of the clear_objclear_objClearObjclear_objClearObjClearObj operation.



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

Relation of interest of the HALCON database.

Default value: 'object' "object" "object" "object" "object" "object"

List of values: '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)

Number of tuples in the relation.

Example (HDevelop)

set_system ('database', 'true')
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


If the parameter is correct, the operator count_relationcount_relationCountRelationcount_relationCountRelationCountRelation returns the value 2 (H_MSG_TRUE). Otherwise an exception is raised.

Possible Predecessors


Possible Successors


See also




ClassesClassesClassesClasses | | | | Operators