compare_objcompare_objCompareObjCompareObjcompare_obj比较对象(算子)
名称
compare_objcompare_objCompareObjCompareObjcompare_obj — 比较图标对象的相等性。
签名
void CompareObj(const HObject& Objects1, const HObject& Objects2, const HTuple& Epsilon, HTuple* IsEqual)
Hlong HObject::CompareObj(const HObject& Objects2, const HTuple& Epsilon) const
Hlong HObject::CompareObj(const HObject& Objects2, double Epsilon) const
Hlong HImage::CompareObj(const HImage& Objects2, const HTuple& Epsilon) const
Hlong HImage::CompareObj(const HImage& Objects2, double Epsilon) const
Hlong HRegion::CompareObj(const HRegion& Objects2, const HTuple& Epsilon) const
Hlong HRegion::CompareObj(const HRegion& Objects2, double Epsilon) const
Hlong HXLD::CompareObj(const HXLD& Objects2, const HTuple& Epsilon) const
Hlong HXLD::CompareObj(const HXLD& Objects2, double Epsilon) const
Hlong HXLDCont::CompareObj(const HXLDCont& Objects2, const HTuple& Epsilon) const
Hlong HXLDCont::CompareObj(const HXLDCont& Objects2, double Epsilon) const
Hlong HXLDPoly::CompareObj(const HXLDPoly& Objects2, const HTuple& Epsilon) const
Hlong HXLDPoly::CompareObj(const HXLDPoly& Objects2, double Epsilon) const
Hlong HXLDPara::CompareObj(const HXLDPara& Objects2, const HTuple& Epsilon) const
Hlong HXLDPara::CompareObj(const HXLDPara& Objects2, double Epsilon) const
Hlong HXLDModPara::CompareObj(const HXLDModPara& Objects2, const HTuple& Epsilon) const
Hlong HXLDModPara::CompareObj(const HXLDModPara& Objects2, double Epsilon) const
Hlong HXLDExtPara::CompareObj(const HXLDExtPara& Objects2, const HTuple& Epsilon) const
Hlong HXLDExtPara::CompareObj(const HXLDExtPara& Objects2, double Epsilon) const
static void HOperatorSet.CompareObj(HObject objects1, HObject objects2, HTuple epsilon, out HTuple isEqual)
int HObject.CompareObj(HObject objects2, HTuple epsilon)
int HObject.CompareObj(HObject objects2, double epsilon)
int HImage.CompareObj(HImage objects2, HTuple epsilon)
int HImage.CompareObj(HImage objects2, double epsilon)
int HRegion.CompareObj(HRegion objects2, HTuple epsilon)
int HRegion.CompareObj(HRegion objects2, double epsilon)
int HXLD.CompareObj(HXLD objects2, HTuple epsilon)
int HXLD.CompareObj(HXLD objects2, double epsilon)
int HXLDCont.CompareObj(HXLDCont objects2, HTuple epsilon)
int HXLDCont.CompareObj(HXLDCont objects2, double epsilon)
int HXLDPoly.CompareObj(HXLDPoly objects2, HTuple epsilon)
int HXLDPoly.CompareObj(HXLDPoly objects2, double epsilon)
int HXLDPara.CompareObj(HXLDPara objects2, HTuple epsilon)
int HXLDPara.CompareObj(HXLDPara objects2, double epsilon)
int HXLDModPara.CompareObj(HXLDModPara objects2, HTuple epsilon)
int HXLDModPara.CompareObj(HXLDModPara objects2, double epsilon)
int HXLDExtPara.CompareObj(HXLDExtPara objects2, HTuple epsilon)
int HXLDExtPara.CompareObj(HXLDExtPara objects2, double epsilon)
描述
算子 compare_objcompare_objCompareObjCompareObjCompareObjcompare_obj 用于比较图标对象的相等性。图标对象通过两个输入参数
Objects1Objects1Objects1Objects1objects1objects_1 和 Objects2Objects2Objects2Objects2objects2objects_2 以(可能混合的)图像、区域或 XLDs 元组形式传递。将 Objects1Objects1Objects1Objects1objects1objects_1 的第 n 个对象与
Objects2Objects2Objects2Objects2objects2objects_2 的第 n 个对象进行比较(遍历所有 n)。若两个传递的对象元组长度相同且所有对象均相等,则将参数 IsEqualIsEqualIsEqualIsEqualisEqualis_equal 设为 1,否则设为 0。
有关 HALCON 中可用图标对象的简要说明,请参阅 对象 一章的引言部分。
根据输入对象的类型,两个对象的相等性必须满足不同的条件。以下列出了每种可能的图标对象的条件:
- 图像:
-
对于所有通道,相应像素的灰度值差异不得超过 EpsilonEpsilonEpsilonEpsilonepsilonepsilon。请注意,图像仅在其域(ROI)内进行比较,且只有当它们具有相同的域(ROI)时才视为相等。
- 区域:
-
区域(Regions)必须相等。参数 EpsilonEpsilonEpsilonEpsilonepsilonepsilon 对区域比较没有影响。
- XLD 轮廓:
-
XLD 轮廓必须具有相同数量的点和属性。点坐标与属性值的差异不得超过 EpsilonEpsilonEpsilonEpsilonepsilonepsilon。
- XLD 多边形:
-
XLD 多边形必须具有相同数量的线段。这些线段的长度与方向,以及控制点的坐标,其差异不得超过
EpsilonEpsilonEpsilonEpsilonepsilonepsilon。
- XLD 平行线与扩展 XLD 平行线:
-
XLD 平行线必须满足以下条件:第一多边形(P1)与第二多边形(P2)的平行线起始线段和终止线段索引必须完全一致,且指向底层轮廓的指针也必须完全相同。
- 修改后的 XLD 平行线:
-
对于修改后的 XLD 平行线,其适用条件与 XLD 平行线及扩展 XLD 平行线相同。此外,平行多边形中线段之间的距离必须完全一致。
请注意,compare_objcompare_objCompareObjCompareObjCompareObjcompare_obj 会比较所有对象的实际内容。相比之下,test_equal_objtest_equal_objTestEqualObjTestEqualObjTestEqualObjtest_equal_obj 仅比较区域的实际内容,而对于其他所有对象,则比较其在内存中的位置。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
参数
Objects1Objects1Objects1Objects1objects1objects_1 (输入对象) object(-array) → objectHObjectHObjectHObjectHobject
参考对象。
Objects2Objects2Objects2Objects2objects2objects_2 (输入对象) object(-array) → objectHObjectHObjectHObjectHobject
测试对象。
EpsilonEpsilonEpsilonEpsilonepsilonepsilon (输入控制) number → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
两个灰度值或坐标等之间的最大允许差异
默认值:
0.0
建议值:
0.0, 1.e-5
IsEqualIsEqualIsEqualIsEqualisEqualis_equal (输出控制) integer → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
布尔结果值。
结果
算子 compare_objcompare_objCompareObjCompareObjCompareObjcompare_obj 在参数正确时返回值 2 (H_MSG_TRUE)。当输入为空(无可用输入对象)时,可设置行为通过算子
set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)。若对象数量不匹配,则会触发异常。
另见
test_equal_objtest_equal_objTestEqualObjTestEqualObjTestEqualObjtest_equal_obj,
test_equal_regiontest_equal_regionTestEqualRegionTestEqualRegionTestEqualRegiontest_equal_region
模块
基础