halcon学习 鼠标交互

目录

鼠标绘图

鼠标点击的区域

使用test_region_point

使用test_xld_point


1 鼠标绘图

dev_get_window (WindowHandle)
dev_clear_window ()
* 画可旋转矩形
draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
* 画任意曲线
draw_polygon (PolygonRegion, WindowHandle)
* 画任意形状闭合区域
draw_region (Region, WindowHandle)

2 鼠标选择

2.1 使用test_region_point

dev_get_window (WindowHandle)
dev_clear_window ()
read_image (Image, 'pellets')
* 分水岭提取区域
gauss_filter (Image, ImageGauss, 9)
sobel_amp (ImageGauss, EdgeAmplitude, 'sum_abs', 3)
watersheds_threshold  (EdgeAmplitude, Basins, 10)
disp_message (WindowHandle, '选择区域', 'window', 12, 12, 'black', 'true')
* 等待鼠标点击某区域
get_mbutton_sub_pix (WindowHandle, RowPress, ColumnPress, Button)
gen_cross_contour_xld (CrossPress, RowPress, ColumnPress,20, rad(45))
* 遍历找出点击的区域
count_obj (Basins, Number)
for Index := 1 to Number by 1
    select_obj (Basins, ObjectSelected, Index)
    *测试点击的坐标是否在该ObjectSelected区域内
    test_region_point (ObjectSelected, RowPress, ColumnPress, IsInside)
    if (IsInside)
        gen_contour_region_xld (ObjectSelected, Contour, 'border')
        dev_display (Image)
        dev_display (CrossPress)
        dev_display (Contour)
        break
    endif
endfor
stop ()

2.2 使用test_xld_point

dev_get_window (WindowHandle)
dev_clear_window ()
read_image (Image, 'pellets')
* 分水岭提取区域
gauss_filter (Image, ImageGauss, 9)
sobel_amp (ImageGauss, EdgeAmplitude, 'sum_abs', 3)
watersheds_threshold  (EdgeAmplitude, Basins, 10)
* 赛选区域,去掉背景区域,防止test_xld_point误判
select_shape (Basins, SelectedRegions, 'area', 'and', 150, 10000)
dev_display (SelectedRegions)
disp_message (WindowHandle, '选择区域', 'window', 12, 12, 'black', 'true')
* 等待鼠标点击某区域
get_mbutton_sub_pix (WindowHandle, RowPress, ColumnPress, Button)
gen_cross_contour_xld (CrossPress, RowPress, ColumnPress,20, rad(45))
* 遍历找出点击的区域
count_obj (SelectedRegions, Number)
for Index := 1 to Number by 1
    select_obj (SelectedRegions, ObjectSelected, Index)
    gen_contour_region_xld (ObjectSelected, Contour, 'border')
    *测试点击的坐标是否在该Contour轮廓内
    test_xld_point (Contour, RowPress, ColumnPress, IsInside)
    *测试点击的坐标是否在该ObjectSelected区域内
    *test_region_point (ObjectSelected, RowPress, ColumnPress, IsInside)
    if (IsInside)
        dev_display (Image)
        dev_display (CrossPress)
        dev_display (Contour)
        break
    endif
endfor
stop ()

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值