1、新建窗口
*参数:左上角坐标x,y,窗口宽,高,背景颜色,窗口句柄
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*参数:输入图片,窗体左上角坐标x,y,窗体宽度的范围(默认-1也可[100,200]),窗体高度的范围(默认-1也可[100,200]),窗体句柄
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
*参数:窗体左上角坐标x,y,窗体宽度的范围(默认-1也可[100,200]),窗体高度的范围(默认-1也可[100,200]),窗体句柄
dev_open_window_fit_size (0, 0, Width, Height, -1, -1, WindowHandle)
2、设置窗口属性
*定义窗口区域填充模式 如果设置为'fill',则区域显示为已填充;如果设置为'margin',则仅显示轮廓。
dev_set_draw ('margin')
3、清除当前窗口的内容
dev_clear_window()
4、关闭窗口
dev_close_window()
5、其他
*获取活动窗口的句柄
dev_get_window (WindowHandle)
*激活窗体 参数:窗体句柄
dev_set_window (WindowHandle)
*读取图片 参数:图片句柄,图片路径
read_image (Image, 'C:1.png')
*灰度 参数:输入图片,输出图片
rgb1_to_gray (Image, GrayImage)
*在当前图形窗口中显示图像对象 参数:输入图像 (用于关闭窗体后,重新给另一个窗体图像)
dev_display (Image)
1、矩形
*创建矩形 参数:矩形句柄,矩形的左上角坐标x,y,矩形的右下角坐标x,y
gen_rectangle1 (Rectangle, 230, 45, 296, 107)
*创建矩形 参数:矩形句柄,矩形中心坐标x,y,弧度,一半的宽度,一半的高度
gen_rectangle2 (Rectangle, 300, 200, 0, 100, 20)
*创建矩形 参数:矩形句柄,矩形中心坐标x,y,弧度,一半的宽度,一半的高度
gen_rectangle2_contour_xld (Rectangle, 500, 200,rad(90), 200, 20.5)
2、圆形
*创建圆形 参数:圆形句柄,圆心x,y,圆的半径
gen_circle (Circle, 290, 369, 146)
*创建一个圆或圆弧 参数:圆或圆弧句柄,圆心x,y,圆的半径,圆或圆弧起点的角度,圆或圆弧端点的角度,方向(默认为正:顺时针),相邻轮廓点之间的距离
gen_circle_contour_xld (ContCircle, 200, 200, 100, 0, rad(90), 'positive', 1)
*创建一个圆弧扇形 参数:圆弧扇形的句柄,圆心x,y,半径,圆或圆弧起点的角度,圆或圆弧端点的角度
gen_circle_sector (CircleSector, 150, 150, 100, 0, 3.14159)
*创建一个椭圆 参数:椭圆句柄,圆心x,y,较长半径的方向,较长半径,较短半径
gen_ellipse (Ellipse, 182, 273, rad(-59.3493), 94, 16)
*创建一个椭圆或椭圆弧 参数:椭圆或椭圆弧句柄,圆心x,y,较长半径的方向,较长半径,较短半径,圆或圆弧起点的角度,圆或圆弧端点的角度,方向(默认为正:顺时针),相邻轮廓点之间的距离
gen_ellipse_contour_xld (ContEllipse, 200, 200, 0, 100, 50, 0, rad(90), 'positive', 1.5)
*创建一个椭圆扇形 参数:椭圆扇形的句柄,圆心x,y,较长半径的方向,较长半径,较短半径,圆或圆弧起点的角度,圆或圆弧端点的角度
gen_ellipse_sector (EllipseSector, 200, 200, 0, 100, 60, 0, 3.14159)
3、十字形状
*为每个输入点生成一个十字形状 参数:十字的句柄,输入点坐标x,y,十字形状的长度,角度
gen_cross_contour_xld (Cross, 100, 100, 6, 0)
*设置字体独立于操作系统 参数:窗体,字体大小,字体名称,是否粗体,是否倾斜
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*此过程在屏幕右下角显示“单击运行继续” 参数:输入窗体,文本颜色,如果设置为“true”,则文本将写在白色框中
disp_continue_message (WindowHandle, 'black', 'true')
*后面一般会加 stop()(停止程序执行)
*赋值
a:=10
*90°的弧度
rad(90)
*|X|为数组X的总个数
Array := [1,2,3]
X := []
B := |X|
*for循环:i从0到10,增量为1
for i := 0 to 10 by 1
endfor
*使用二进制阈值分割图像 参数:输入图像,输出区域,方法,提取暗或亮,已使用的阈值
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
*使用全局阈值分割图像 参数:输入图像,输出区域,灰度值的下限阈值,灰度值的上限
*threshold (Image, Region1, 128, 255)
*输入一个区域,输出的为多个区域
connection (Region, ConnectedRegions)
*借助形状特征选择区域 参数:输入区域,输出区域,要检查的形状特征,各个要素的链接类型,下限,上限
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5000, 10000)
read_image (Image, 'clip')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
disp_continue_message (WindowHandle, 'black', 'true')
stop()
*使用二进制阈值分割图像 参数:输入图像,输出区域,方法,提取暗或亮,已使用的阈值
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
connection (Region, ConnectedRegions)
*借助形状特征选择区域 参数:输入区域,输出区域,要检查的形状特征,各个要素的链接类型,下限,上限
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5000, 10000)
*计算区域的方向
orientation_region (SelectedRegions, Phi)
*计算区域的面积和中心点坐标
area_center (SelectedRegions, Area, Row, Column)
*设置窗口
dev_set_line_width (3)
dev_set_draw ('margin')
*将字符串显示在窗口上 参数:输入窗体,字符串,坐标x,y,字体颜色,
*如果设置为“ true”,则文本将写在橙色框中。如果设置为“ false”,则不会显示任何框
disp_message (WindowHandle, '角度='+Area, 'window', Row, Column, 'black', 'true')
*创建一个形状模型进行匹配
*参数:图片,金字塔等级,最小旋转角度,旋转角度的范围,角度的步长,优化,匹配指标,模板图像中对象对比度的阈值,搜索图像中对象的最小对比度模型的句柄
*auto:自动
create_shape_model (ImageReduced, 'auto', 0, 0, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*在图像中找到形状模型的匹配。
*参数 输入图像,模型,搜索最小角度,范围,最低分数阈值,要找到的模型的个数,模型实例的最大重叠量,亚像素精度,金字塔等级数,搜索试探法的“贪婪感”(0:安全但缓慢; 1:快速但可能错过比赛),
*找到的模型的坐标x,y,找到的模型的旋转角度,找到的模型的分数
find_shape_model (Image, ModelID, 0, 0.79, 0.7, 0, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
*关闭窗口
dev_close_window()
*更新
dev_update_off()
*读取图片 参数:图片句柄,图片路径
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-18.11-Steady/examples/images/ampoules/ampoules_01.png')
*获取图片大小 参数:输入图片,图片的宽,图片的高
get_image_size (Image, Width, Height)
*新建窗口 参数:输入图片,窗体左上角坐标x,y,窗体宽度的范围(默认-1也可[100,200]),窗体高度的范围(默认-1也可[100,200]),窗体句柄
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
*定义窗口区域填充模式 如果设置为'fill',则区域显示为已填充;如果设置为'margin',则仅显示轮廓。
dev_set_draw ('margin')
*轮廓输出的线宽
dev_set_line_width (3)
*设置字体独立于操作系统 参数:窗体,字体大小,字体名称,是否粗体,是否倾斜
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
*创建矩形 参数:矩形句柄,矩形的左上角坐标x,y,矩形的右下角坐标x,y
gen_rectangle1 (Rectangle, 230, 45, 296, 107)
*将矩形区域内的图片截取出 参数:输入图片,输入矩形,输出图像
reduce_domain (Image, Rectangle, ImageReduced)
*创建一个形状模型进行匹配
*参数:图片,金字塔等级,最小旋转角度,旋转角度的范围,角度的步长,优化,匹配指标,模板图像中对象对比度的阈值,搜索图像中对象的最小对比度模型的句柄
*auto:自动
create_shape_model (ImageReduced, 'auto', 0, 0, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*在图像中找到形状模型的匹配。
*参数 输入图像,模型,搜索最小角度,范围,最低分数阈值,要找到的模型的个数,模型实例的最大重叠量,亚像素精度,金字塔等级数,搜索试探法的“贪婪感”(0:安全但缓慢; 1:快速但可能错过比赛),找到的模型的坐标x,y,找到的模型的旋转角度,找到的模型的分数
find_shape_model (Image, ModelID, 0, 0.79, 0.7, 0, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
*for循环:i从0到|Row|-1,增量为1
for i := 0 to |Row|-1 by 1
gen_cross_contour_xld (Cross, Row[i], Column[i], 6, Angle[i])
endfor