1.Halcon常用算子详解

1.Intersection(Region1, Region2, RegionIntersection::)

   作用:计算两个区域的交集。
算子翻译(对应以上参数顺序):
   输入区域1、
   输入区域2、
   输出区域(RegionIntersection <= Region1)
 

   描述:
算子intersection计算两个区域(这两个区域中可以包含很多个小区域)的交集,
Region1中的每个区域都和Region2中的每个区域进行相交;Region1中的区域在和Region2中的区域相交之前,Region2中的区域必须和并成一个区域;
交集后的区域中的区域顺序和Region1中的区域顺序是一样的。

2.AreaCenter(Regions:::Area, Row, Column);

	HObject hRegion
	HTuple tArea, tRow, tCol;
	AreaCenter(hRegion, &tArea, &tRow, &tCol);
	if (tArea[0].L() < 50) {
		LOG_WARNING(_T("AddInspectRegion Out, 面积太小,直接返回"))
		return;
	}

1.Halcon常用算子详解_第1张图片
3.GenEmptyObj(HObject&);

	HObject markAll, markSelect, hBakBackRegionAll;
	GenEmptyObj(&markAll);
	GenEmptyObj(&markSelect);
	GenEmptyObj(&hBakBackRegionAll);

1.Halcon常用算子详解_第2张图片
4.difference (Region, RegionErosion, RegionDifference)

ead_image (Image, '27.png')
*二值分割
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
*使用腐蚀
erosion_circle (Region, RegionErosion, 5)
*计算腐蚀前和腐蚀后两个区域的差集
difference (Region, RegionErosion, RegionDifference)
dev_display (Image)
dev_display (RegionDifference)

5.Connection(hInspectRegion, &hConnections);

	HObject hInspectRegion
	HObject hConnections;
	Connection(hInspectRegion, &hConnections);

1.Halcon常用算子详解_第3张图片
6.SelectShape(hConnections, &hConnections, “area”, “and”, 50, INT_MAX);//太小就不保存了

1.Halcon常用算子详解_第4张图片
https://blog.csdn.net/weixin_39829336/article/details/112355036
7.Hobject

Information
compare_obj
比较关于相等的标志性对象。
count_obj
元组中的对象数。
get_channel_info
关于图像对象的组件的信息。
get_obj_class
图像对象的类名。
test_equal_obj
比较关于相等的映像对象。
Manipulation
clear_obj
从 HALCON 数据库中删除一个标志性对象。
concat_obj
连接两个标志性对象元组。
copy_obj
复制 HALCON 数据库中的标志性对象。
gen_empty_obj
创建一个空对象元组。
insert_obj
将对象插入到标志性对象元组中。
integer_to_obj
将一个“整数”转换为一个标志性对象。
obj_diff
计算两个对象元组的差值。
obj_to_integer
将标志性对象转换为“整数”。
remove_obj
从标志性对象元组中移除对象。
replace_obj
替换标志性对象元组的一个或多个元素。
select_obj
从对象元组中选择对象。

8.Uni1和uni2

1.union1
union1()——把所有的输入区域合并为一个区域
函数原型:union1(Region : RegionUnion : : )

功能:函数将Region元组内的全部区域合并成一个独立的区域,保存于RegionUnion
参数:
Region (input_object) ——要计算其并集的区域,也就是一个个的输入区域
RegionUnion (output_object) ——所有输入区域的并集
                                                要素数: RegionUnion <= Region

2.union2
union2()——将两个区域合并成一个整体,仅限两个
函数原型:union2(Region1(输入), Region2(输入) : RegionUnion(输出) : : )

功能:将Region2 和Region1元组内的区域合并成一个独立的区域保存于RegionUnion 。把第二个参数Region2里的所有区域合并,然后将合并后的区域分别与Region1中的每一个区域进行合并,然后保存到RegionUnion 中。最后,RegionUnion 元素个数与Region1元素个数相同。

参数:
Region1 (input_object) ——要与Region2中的所有区域的并集计算的区域
Region2 (input_object) ——要添加到Region1的区域
RegionUnion (output_object) ——最终得到的区域
                                               要素数::RegionUnion == Region1

9.ReduceDomain

1 reduce_domain算子
reduce_domain ( Image, Region : ImageReduced : : ) 
其中,Image是输入的图像;Region是输入的区域;ImageReduced是输出的图像,是Image中Region的那部分图像。
1
2
  通过reduce_domain确实能获得特定区域Region位置的图像,但是,reduce_domain是缩小一个图像的定义域,并不缩小图像的实际尺寸,即新图像ImageReduced尺寸大小并未发生变化。如果使用get_image_size来计算ImageReduced图像的尺寸,其尺寸和 原图Image一样。
  并且,包括一系列的domain算子,比如change_domain,均不改变图像矩阵的大小。
  

2 crop_domain算子
crop_domain ( Image : ImagePart : : ) 
Image是输入的原始图像;ImagePart是输出的最小外界正矩形的图像,也就是说,如果一副大图上,就一块区域有值,其他区域均没有值。通过调用该函数,能够将有值的区域以最小外界正矩形的方式返回,而剪掉那些没有值的区域。
1
2
  crop_domain能够对图像的尺寸进行剪裁。而且,其一系列的domain算子均能对图像尺寸进行剪裁。

3 配合使用的效果
reduce_domain ( Image, Region : ImageReduced : : ) 
crop_domain ( ImageReduced : ImagePart : : ) 
1
2
  一般来说,如果想要得到某个ROI区域的小图,且对小图的尺寸有要求时,需要特别注意,配合使用上述两个函数。比如说要调用傅立叶变换对小图进行分析。

你可能感兴趣的:(Halcon,c++)