HALCON学习笔记 12
基础
read_image (Image, ‘D:/halcon学习资料/口罩照片/测试/1.7.bmp’)
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/3, Height/3, ‘black’, WindowHandle)
dev_display (Image)
binary_threshold (Image, Background, ‘max_separability’, ‘dark’, UsedThreshold)*输出为Background,选max_separability的意思就是将明暗最大限度分开,用的最多,UsedThreshold是选择明暗的阈值的最值.
reduce_domain (Image, Background, ImageReduced)*通过reduce_domain确实能获得特定区域Region位置的图像,但是,reduce_domain是缩小一个图像的定义域,并不缩小图像的实际尺寸,即新图像ImageReduced尺寸大小并未发生变化。如果使用get_image_size来计算ImageReduced图像的尺寸,其尺寸和 原图Image一样。
binary_threshold (ImageReduced, Background, ‘max_separability’, ‘dark’, UsedThreshold)
reduce_domain (ImageReduced, Background, ImageReduced)
binary_threshold (ImageReduced, Background, ‘max_separability’, ‘dark’, UsedThreshold)
reduce_domain (ImageReduced, Background, ImageReduced)
binary_threshold (ImageReduced, Background, ‘max_separability’, ‘dark’, UsedThreshold)
connection (Background, ConnectedRegions) *区域连通,可将阈值分割的不相连的区域分割成单个区域,分开,获得单个联通域,
select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 8077.4, 50000) **选取特定面积内的图像块
for Index := 1 to 2 by 1 *(定义一个变量后得加endfor)
select_obj (SelectedRegions, ObjectSelected, Index) *将SelectedRegions没连接的几个区域分为几个,从Index开始(从小到大,配合循环使用)各个区域储存在ObjectSelected中,由循环提取各个
closing_circle (SelectedRegions, RegionClosing, 15)*闭运算=膨胀+腐蚀。(连接细小的地方,所以叫闭)
select_obj (RegionClosing, ObjectSelected, Index)**将RegionClosing没连接的几个区域分为几个,从Index开始(从小到大,配合循环使用)各个区域储存在ObjectSelected中,由循环提取各个
*reduce_domain (ImageReduced, Background, ImageReduced1)
skeleton (ObjectSelected, Skeleton) *检测ObjectSelected的骨架,忽略宽度只留长度(用于测量长度备用)
gen_contours_skeleton_xld (Skeleton, Contours, 1, ‘filter’) **区域生成骨骼,骨骼转轮廓,需和上面的算子配合使用
length_xld (Contours, Length)*将轮廓Contours的长度测量后送到Length中,Length为一变量,可以直接读出
junctions_skeleton (Skeleton, EndPoints, JuncPoints) *取出骨架Skeleton中的起终点送到EndPoints,配合下面的算子取出始终点
get_region_points (EndPoints, Rows, Columns)
if (Index=1)
gen_cross_contour_xld (Cross, Rows, Columns, 90, 0.785398)
else
gen_cross_contour_xld (Cross2, Rows, Columns, 90, 0.785398)
endif
endfor
*获取面积大小
area_center (SelectedRegions, Area, Row, Column)
*注:CSND复制的可能有中文符号,比如引号之类的.