Halcon Solution Guide I basics(3): Region Of Interest(有兴趣区域/找重点)

文章专栏

Halcon开发

Halcon学习 练习项目gitee仓库

CSDN Major 博主Halcon文章推荐

前言

今天来看第三章内容,既然是零基础,而且我还有大概3-4个月的时间准备,我还是老老实实从头开始学机器视觉好了。

文章解读

下面我将 Region Of Interest 命名为[找重点]

前言

  • [找重点]可以减少无效信息和
  • [找重点]经常用于找用于模板匹配的区域
    在这里插入图片描述

创建ROI

  • Halcon提供了一个[reduce_domain]的方法去获取图片域的ROI信息。
    在这里插入图片描述

案例1:直接截取ROI

在这里插入图片描述

*读取图片文件
read_image (Image, 'mreut')
*得到一个坐标为(256,256),半径为200的圆
gen_circle (ROI, 256, 256, 200)
*截取这个圆内的图像信息
reduce_domain (Image, ROI, ImageReduced)
*找到亚像素精度的图片信息
edges_sub_pix (ImageReduced, Edges, 'lanser2', 0.5, 20, 40)
*显示Image/ROI/Edges
dev_display (Image)
dev_display (ROI)
dev_display (Edges)

效果
在这里插入图片描述

手动截取ROI

在这里插入图片描述
在这里插入图片描述

* critical_points.hdev: locate saddle point markers in an image
* 
dev_update_window ('off')
* ****
* 获取图片信息
* ****
*加载图片
read_image (Image, 'landmarks')
*获取图片大小
get_image_size (Image, Width, Height)
*设置线段等基本参数
dev_close_window ()
*打开图片长宽的窗口,拿到WindowHandle的句柄
*dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*我更推荐使用自适应图片大小的窗体这个算子
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)
dev_set_line_width (3)
dev_set_color ('blue')
dev_set_draw ('margin')
dev_display (Image)
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
* ****
* 截取ROI
* ****
disp_message (WindowHandle, '使用鼠标左键截取图片区域,右键退出', 'window', 12, 12, 'blue', 'false')
dev_set_color ('white')
*--获取绘画的Region区域
draw_region (Region, WindowHandle)
dev_display (Region)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* ****
* step: create ROI
* ****
* 使用reduce_domain算子,设置图片的ROI
reduce_domain (Image, Region, ImageReduced)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* ****
* step: process image within ROI
* ****
critical_points_sub_pix (ImageReduced, 'facet', 1.5, 8, RowMin, ColumnMin, RowMax, ColumnMax, RowSaddle, ColSaddle)

*清空整个窗口
dev_clear_window ()
*只显示ROI部分内容
dev_display (ImageReduced)
dev_set_color ('yellow')
for i := 0 to |RowSaddle| - 1 by 1
    gen_cross_contour_xld (Cross, RowSaddle[i], ColSaddle[i], 25, 0.785398)
    dev_display (Cross)
endfor
stop ()
dev_update_window ('on')

运行结果
在这里插入图片描述

总结

ROI就是个截取部分区域的功能。有主动设置区域和被动设置区域两种方法。

ROI套路

获取窗口句柄

*打开图片长宽的窗口,拿到WindowHandle的句柄
*dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*我更推荐使用自适应图片大小的窗体这个算子
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

截取ROI区域

* 参数设置ROI区域
gen_circle (ROI, 256, 256, 200)
* 使用WindowHandle窗口句柄,鼠标截取ROI区域
draw_region (ROI, WindowHandle)

获取有效区域

* 使用reduce_domain句柄,获取ROI区域信息
reduce_domain (Image, ROI, ImageReduced)

* 可以使用其它算子去解析ROI的ImageReduce区域。
critical_points_sub_pix (ImageReduced, 'facet', 1.5, 8, RowMin, ColumnMin, RowMax, ColumnMax, RowSaddle, ColSaddle)

*--如果想凸显ROI区域,可以进行如下操作
*清空整个窗口
dev_clear_window ()
*只显示ROI部分内容
dev_display (ImageReduced)

在这里插入图片描述

Stop组合

* 使用disp_continue_message和stop组合显示F5继续程序的提示
disp_continue_message (WindowHandle, 'black', 'true')
stop ()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值