count_relationcount_relationCountRelationCountRelationcount_relation计数关系(算子)

名称

count_relationcount_relationCountRelationCountRelationcount_relation — HALCON 数据库中的条目数。

签名

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)   ( Windows only)

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

static int HSystem.CountRelation(string relationName)

def count_relation(relation_name: str) -> int

描述

count_relationcount_relationCountRelationCountRelationCountRelationcount_relation 返回自数据库通过 set_systemset_systemSetSystemSetSystemSetSystemset_system 参数 'database'"database""database""database""database""database" 启动以来,HALCON 数据库中 RelationNameRelationNameRelationNameRelationNamerelationNamerelation_name 关系中的条目数 NumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesnumOfTuplesnum_of_tuples。若数据库处于禁用状态,则 NumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesnumOfTuplesnum_of_tuples 为 0,且当通过 set_systemset_systemSetSystemSetSystemSetSystemset_system 设置 'do_low_error'"do_low_error""do_low_error""do_low_error""do_low_error""do_low_error" 时还会触发警告。数据库状态可通过 get_systemget_systemGetSystemGetSystemGetSystemget_system'database'"database""database""database""database""database" 参数进行查询。

HALCON数据库由五个称为关系(relations)的表组成。这些关系中的条目称为元组(需注意与命名对象数组的 HALCON 元组区分)。若启用该数据库,则包含区域数据、图像矩阵和 XLDs 的基本关系,以及 HALCON 对象和 HALCON 元组(即对象数组)的容器关系。HALCON 对象区域和图像分别由区域数据关系和图像矩阵关系中的元素构造而成。区域由指向区域数据关系中元组的指针构成。图像由指向区域数据关系中元组的指针构成,并额外包含一个或多个指向矩阵关系中元组的指针。多通道图像具有多个矩阵指针。

区域和图像均称为对象。区域可视为不包含图像矩阵的图标对象的特例。为实现高效内存管理,区域数据关系与图像矩阵关系的元组将被不同对象共同使用。因此图像数量可能多于图像矩阵。仅三个低级关系 'image'"image""image""image""image""image"'region'"region""region""region""region""region"'XLD'"XLD""XLD""XLD""XLD""XLD" 与内存消耗相关。图像对象(包括区域和图像)仅包含对区域和矩阵数据的引用,因此仅需占用几字节内存。

RelationNameRelationNameRelationNameRelationNamerelationNamerelation_name 的可能值:

'image':

图像矩阵。单个矩阵可作为多个图像的组成部分(无冗余存储)。

'region':

区域与图像域。单个区域可作为多个图像对象的组成部分(无冗余存储)。

'XLD':

扩展线描述:轮廓、多边形、平行线、线等。XLD 数据类型不包含灰度值,以亚像素精度存储。

'object':

图标对象。由区域(参见 'region'"region""region""region""region""region")构成,可选图像矩阵(参见 'image'"image""image""image""image""image")。

'tuple':

紧凑模式下,图标对象元组在此关系中以代理形式存储。操作时仅使用该元组键,而非单独对象键。具体实现方式取决于宿主语言:C++ 等语言传递单个对象,C 等语言则传递元组。

某些数据库对象将由算子 reset_obj_dbreset_obj_dbResetObjDbResetObjDbResetObjDbreset_obj_db 自动创建,因此必须始终可用(包括未定义的灰度值组件、‘full’(HALCON/C 中的 FULL_REGION)和 ‘empty’(HALCON/C 中的 EMPTY_REGION)对象,以及其中包含的空区域和完整区域)。通过调用 get_channel_infoget_channel_infoGetChannelInfoGetChannelInfoGetChannelInfoget_channel_info 算子,该算子相应地也作为完整区域和空区域的“创建者”出现。该算子可用于检查 clear_objclear_objClearObjClearObjClearObjclear_obj 操作的完整性。

注意

在不同线程间传递图标对象时,数据库信息的收集操作并非线程安全的,这意味着当在生成对象的线程之外的线程中删除对象时会出现问题。

执行信息

参数

RelationNameRelationNameRelationNameRelationNamerelationNamerelation_name (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

HALCON 数据库的关联关系。

默认值: 'object' "object" "object" "object" "object" "object"

值列表: '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"

NumOfTuplesNumOfTuplesNumOfTuplesNumOfTuplesnumOfTuplesnum_of_tuples (输出控制)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

关系中的元组数。

示例(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 )

结果

如果参数正确,算子 count_relationcount_relationCountRelationCountRelationCountRelationcount_relation 返回值 2 (H_MSG_TRUE)。否则将抛出异常。

可能的前趋

reset_obj_dbreset_obj_dbResetObjDbResetObjDbResetObjDbreset_obj_db

可能的后继

set_systemset_systemSetSystemSetSystemSetSystemset_system

另见

clear_objclear_objClearObjClearObjClearObjclear_obj

模块

基础