Operators |
count_relation — Number of entries in the HALCON database.
count_relation( : : RelationName : NumOfTuples)
The operator count_relation 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' of the operator set_system. If the database was disabled, the number 0 will be returned and a warning will be raised if value 'do_low_error' of operator set_system is enabled. The state of the database can be queried by the parameter value 'database' of the operator get_system.
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 RelationName:
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_db 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_info, 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_obj operation.
Relation of interest of the HALCON database.
Default value: 'object'
List of values: 'XLD' , 'image' , 'object' , 'region' , 'tuple'
Number of tuples in the 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
If the parameter is correct, the operator count_relation returns the value 2 (H_MSG_TRUE). Otherwise an exception is raised.
Foundation
Operators |