算子窗口操作
抠图 (提取图像感兴趣的区域)
* 使用halcon 抠图* 窗体属性设设置: 设置窗体绘制图案的模式 magrin边框模式(只有一个边框)
* fill填充模式(边框内部会有一个遮罩层)
dev_set_draw ('fill')* 设置颜色
dev_set_color ('green')
* 设置线宽dev_set_line_width (5)read_image (Image, 'printer_chip/printer_chip_01')* 获取当前图像窗口的句柄
dev_get_window (WindowHandle)*draw_rectangle1() 设置在哪个窗口绘制矩形,以及获取坐标(不会绘制)
*参数1: 窗口的句柄
*参数2: 输出x
*参数3: 输出y
*参数4: 输出x1
*参数5: 输出y1* halcon中横向的是y轴 纵向的是x轴 行列坐标
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)* 根据起点和终点的坐标,在窗体上绘制矩形 生成一个区域类型的变量
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)* 获取当前区域的 阈值范围
* 设置选择的图像正常显示,其他的区域被黑色遮住
* 参数1: 原始图像
* 参数2: 选择的区域
* 参数3: 生成的新图像
reduce_domain (Image, Rectangle, ImageReduced)* 根据阈值范围抠图* 参数1: 需要提起的图像
* 参数2:提取出的新图像
crop_domain (ImageReduced, ImagePart)
halcon 窗体有关的算子【函数】
特点: dev_开头 在Hdevelop 开发工具中有那些窗体
-
图像窗口:用于渲染 图片,区域,轮播 视频流等
-
变量窗口:用户展示输出变量;图像变量,控制变量
-
程序窗口;用于编写图像算法程序
-
算子窗口;用于查看算子的参数;输出 输入 类型
-
监控窗口;监视元素变化 ,对象类型等
* 窗口有那些操作:*1.新建窗体
*2.设置窗体中显示的内容
*3.关闭窗体,输出窗体
*4.更新窗体
*5.设置窗体属性: 背景颜色 字体大小 绘制图像
*6.在窗体上绘制图形,显示文本....test:=[1,2,3,4]* 打开监视变量的窗体
* 参数1: 需要监视的变量
dev_inspect_ctrl (test)* 暂停程序
stop()
test[1]:=666stop()test[2]:=888*关闭监视test变量的窗体
dev_close_inspect_ctrl (test)* 打开一个新的窗体
dev_open_window (0, 0, 600, 600, 'black', aaa)
dev_open_window (0, 0, 500, 500, 'yellow', bbb)
dev_open_window (0, 0, 400, 400, 'green', ccc)*关闭窗体 默认关闭最后一个窗体
* dev_open 打开窗体 放到集合中 dev_close 是从集合的尾部删除元素
dev_close_window ()*设置窗体的属性 ,设置的是最后打开的图像窗体上的属性
dev_set_color ('red')
dev_set_draw ('margin')
dev_set_line_width (10)
*设置错误的显示方式
dev_set_check ('~give_error')* 绘制圆形
*参数1: 在哪个窗口中绘制
*参数2参数3圆心的坐标
* 参数4 :半径
draw_circle (bbb, Row, Column, Radius)*绘制圆形
* 参数1: 绘制出来的圆形
* 参数2参数3: 需要绘制的圆的圆心坐标
* 参数4:半径
gen_circle (Circle, Row, Column, Radius)dev_get_window (WindowHandle)draw_circle (WindowHandle, Row1, Column1, Radius1)gen_circle (Circle1, Row1, Column1, Radius1)* disp 是display 的 简称 表示 显示* 参数1: 在哪个窗体显示
* 参数2,参数3: 显示的圆心坐标
* 参数4: 半径
disp_circle (WindowHandle, Row1, Column1, Radius1)* 注意:当开启多个图形窗口的时候,很多操作都要注意先后顺序* 很多算子,都是在最后打开的窗体中操作的
加载图像划分区域
*使用工具生成代码
*图形窗口 -->绘制新的ROI -->选择要绘制的形状 ---> 工具--->插入代码
gen_rectangle1 (ROI_0, 143.754, 108.459, 218.251, 281.718)stop()dev_clear_window ()read_image (Image, 'printer_chip/printer_chip_01')* 获取图像高度和宽度
get_image_size (Image, Width, Height)* 根据像素之间的灰度值将图像划分成n个区域
* 参数1:输入图像
* 参数2:输出区域的集合
* 参数3:横向像素之间的距离
* 参数4:纵向像素之间的距离
* 参数5: 灰度值
* 参数6: 输出区域的最小面积
regiongrowing (Image, Regions, 3, 3, 6, 100)
* 获取区域的总数量
count_obj (Regions, Number)for Index := 1 to Number by 1dev_clear_window()* 从集合中获取某个对象select_obj (Regions, ObjectSelected, Index)dev_display (ObjectSelected)
endfor
生成网格图像
* 生成网格图片 类型是图像类型
gen_image_squared_paper (ImageSquaredPaper)
窗体文本标记
文本标记流程
-
创建描述文字的变量
-
设置窗体上显示文字的,种类,大小 ,颜色,以及哪个窗体的属性
-
将文字显示到窗体上
-
显示在哪个窗体,哪个位置上,生么字体,大小多啊后,背景颜色,字体颜色,盒子阴影...等属性
-
文字既可以在窗体上,也可以在图片,标记。
* 初始化
dev_close_window ()dev_get_window (WindowHandle)*设置某个窗体上文本显示的带大小 字体类型 是否粗体
*参数1: 窗体的句柄
*参数2:字体大小
*参数3:字体类型
*参数4:是否为粗体
*参数5:是否为斜体
set_display_font (WindowHandle, 16, 'sans', 'true', 'false')* 在图像窗口上显示文本
*参数1:需要显示的文本内容
*参数2: window 表示在窗体上显示文字 Image表示在图像上显示文字
* 参数3参数4 显示的位置 top left 左上角
* top 上 bottom 下 left 左 right 右 center 中间
dev_disp_text ('吴亦凡1', 'window', 'top', 'left', 'black', [], [])dev_disp_text ('吴亦凡2', 'window', 'center', 'center', 'black', [], [])dev_disp_text ('吴亦凡3', 'window', 'bottom', 'right', 'black', [], [])* 设置显示到某一个坐标位置
dev_disp_text ('吴亦凡4', 'window', 100, 100, 'black', [], [])* 参数5 字体颜色
dev_disp_text ('吴亦凡5', 'window', 100, 100, 'red', [], [])*
dev_disp_text ('吴亦凡6', 'window', 150, 150, 'black', ['box_color'], ['green'])
dev_disp_text ('吴亦凡6', 'window', 150, 150, 'black', ['shadow'], ['false'])dev_disp_text ('吴亦凡6', 'window', 150, 150, 'black', ['shadow_color','box_color'], ['yellow','green'])https://blog.csdn.net/chenai886/article/details/145136736
关于算子详细的窗体操作:
HALCON 【窗体操作】 dev_disp_text_halcon disptext-CSDN博客