【issue-halcon例程学习】rim_simple.hdev

例程功能

找钻孔直径。

代码如下

dev_update_off ()
* ****
* step: acquire image
* ****
read_image (Image, 'rim')
get_image_size (Image, Width, Height)
dev_open_window_fit_image (Image, 0, 0, Width, Height, WindowID)
set_display_font (WindowID, 14, 'mono', 'true', 'false')
* ****
* step: determine region of interest (ROI)
* ****
threshold (Image, Dark, 0, 128)
connection (Dark, DarkRegions)
select_shape (DarkRegions, Circles, ['circularity', 'area'], 'and', [0.85, 50], [1.0, 99999])
boundary (Circles, RegionBorder, 'inner')
dilation_circle (RegionBorder, RegionDilation, 6.5)
union1 (RegionDilation, ROIEdges)
dev_display (Image)
dev_set_color ('yellow')
dev_set_draw ('margin')
dev_display (ROIEdges)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* step: extract edges
* ****
reduce_domain (Image, ROIEdges, ImageROI)
edges_sub_pix (ImageROI, Edges, 'lanser2', 0.3, 10, 30)
sort_contours_xld (Edges, SortedContours, 'upper_left', 'true', 'row')
dev_display (Image)
colored_display (SortedContours, ['cyan', 'white'])
disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* step: process contours
* ****
fit_ellipse_contour_xld (Edges, 'ftukey', -1, 2, 0, 200, 3, 2, Row, Column, Phi, Ra, Rb, StartPhi, EndPhi, PointOrder)
NumHoles := |Ra|
gen_ellipse_contour_xld (ContEllipse, Row, Column, Phi, Ra, Rb, gen_tuple_const(NumHoles,0), gen_tuple_const(NumHoles,rad(360)), gen_tuple_const(NumHoles,'positive'), 1)
dev_display (Image)
sort_contours_xld (ContEllipse, SortedContEllipse, 'upper_left', 'true', 'row')
colored_display (SortedContEllipse, ['cyan', 'white'])
dev_set_color ('yellow')
for i := 0 to NumHoles - 1 by 1
    sinPhi := sin(Phi[i])
    cosPhi := cos(Phi[i])
    disp_arrow (WindowID, Row[i], Column[i], Row[i] - sinPhi * Ra[i], Column[i] + cosPhi * Ra[i], 1)
    disp_arrow (WindowID, Row[i], Column[i], Row[i] - cosPhi * Rb[i], Column[i] - sinPhi * Rb[i], 1)
    disp_arrow (WindowID, Row[i], Column[i], Row[i] + sinPhi * Ra[i], Column[i] - cosPhi * Ra[i], 1)
    disp_arrow (WindowID, Row[i], Column[i], Row[i] + cosPhi * Rb[i], Column[i] + sinPhi * Rb[i], 1)
    set_tposition (WindowID, Row[i] - Rb[i] - 50, Column[i] - 85)
    write_string (WindowID, 'D1=' + 2 * Ra[i])
    set_tposition (WindowID, Row[i] - Rb[i] - 30, Column[i] - 85)
    write_string (WindowID, 'D2=' + 2 * Rb[i])
endfor

要求

  1. 轮廓提取是一个耗时的步骤,因此有必要在轮廓提取前提取ROI
	threshold (Image, Dark, 0, 128)
	connection (Dark, DarkRegions)
	select_shape (DarkRegions, Circles, ['circularity', 'area'], 'and', [0.85, 50], [1.0, 99999])
	boundary (Circles, RegionBorder, 'inner')
	dilation_circle (RegionBorder, RegionDilation, 6.5)
	union1 (RegionDilation, ROIEdges)
  1. 用椭圆合轮廓fit_ellipse_contour_xld,拟合返回的参数可以用来生成gen_ellipse_contour_xld并显示椭圆(用圆拟合也行fit_circle_contour_xld ~> gen_circle_contour_xld);
	fit_ellipse_contour_xld (Edges, 'ftukey', -1, 2, 0, 200, 3, 2, Row, Column, Phi, Ra, Rb, StartPhi, EndPhi, PointOrder)
	NumHoles := |Ra|
	gen_ellipse_contour_xld (ContEllipse, Row, Column, Phi, Ra, Rb, gen_tuple_const(NumHoles,0), gen_tuple_const(NumHoles,rad(360)), gen_tuple_const(NumHoles,'positive'), 1)

相关推荐

  1. issue-halcon学习】ball.hdev

    2024-02-01 11:54:02       29 阅读
  2. issue-halcon学习】fin.hdev

    2024-02-01 11:54:02       47 阅读
  3. issue-halcon学习】measure_arc.hdev

    2024-02-01 11:54:02       22 阅读
  4. issue-halcon学习】fuzzy_measure_pin.hdev

    2024-02-01 11:54:02       31 阅读
  5. issue-halcon学习】edge_segments.hdev

    2024-02-01 11:54:02       35 阅读
  6. issue-halcon学习】edges_color.hdev

    2024-02-01 11:54:02       34 阅读
  7. issue-halcon学习】lines_gauss.hdev

    2024-02-01 11:54:02       26 阅读
  8. issue-halcon学习】rim_simple.hdev

    2024-02-01 11:54:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 11:54:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 11:54:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 11:54:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 11:54:02       18 阅读

热门阅读

  1. 深度学习有何新进展?

    2024-02-01 11:54:02       31 阅读
  2. React和Vue实现路由懒加载

    2024-02-01 11:54:02       25 阅读
  3. SpringCloud

    2024-02-01 11:54:02       36 阅读
  4. 大数据之 Spark 比 MapReduce 快的原因

    2024-02-01 11:54:02       31 阅读
  5. Springboot项目多数据源配置详细步骤

    2024-02-01 11:54:02       31 阅读
  6. 幻兽帕鲁服务器游戏版本怎么升级更新?

    2024-02-01 11:54:02       32 阅读
  7. 低代码开发在金融系统中的应用研究

    2024-02-01 11:54:02       42 阅读
  8. 【Linux 无网络状态下离线安装 MySQL】

    2024-02-01 11:54:02       37 阅读
  9. vue3兼容超宽屏、超窄屏、4K屏幕等等

    2024-02-01 11:54:02       30 阅读
  10. API横向越权修复之ID加密

    2024-02-01 11:54:02       25 阅读