zoukankan      html  css  js  c++  java
  • Halcon 圆测量与直线测量

    read_image (Image, 'test.bmp')
    get_image_size (Image, Width, Height)
    dev_close_window ()
    dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
    dev_display (Image)
    dev_set_draw ('margin')
    draw_line (WindowHandle, Row1, Column1, Row2, Column2)
    draw_circle (WindowHandle, Row, Column, Radius)
    *【输入】
    StartRow:=Row1
    StartCol:=Column1
    EndRow:=Row2
    EndCol:=Column2
    *卡尺宽度
    RuleWidth:=40
    *卡尺高度
    RuleHeight:=1
    *卡尺阈值
    RuleThd:=5
    *卡尺间隔
    RuleSpace:=2
    *搜索模式
    RuleMode:='negative'
    *点选择
    RuleSeleP:='all'
    *【输出】
    LineRow0:=0
    LineCol0:=0
    LineRow1:=0
    LineCol1:=0
    PointRows:=[]
    PointCols:=[]
    
    MeasureLine (Image, Contours, Rectangle, StartRow, StartCol, EndRow, EndCol, RuleWidth, RuleHeight, RuleSpace, RuleThd, RuleSeleP, RuleMode, PointRows, PointCols, LineRow0, LineCol0, LineRow1, LineCol1)
    
    MeasureCircle (Image, Contours, Row, Column, Radius, RuleWidth, RuleHeight, RuleSpace, RuleThd, RuleSeleP, RuleMode, PointRows, PointCols, CircleRow, CircleCol, CircleRad)
    
    *显示
    dev_display (Image)
    dev_display (Rectangle)
    dev_set_color ('spring green')
    dev_display (Contours)
    dev_set_color ('orange')
    gen_cross_contour_xld (Cross, PointRows, PointCols, 6, 0.785398)
    dev_set_color ('red')
    gen_circle_contour_xld (ContCircle, CircleRow, CircleCol, CircleRad, 0, 6.28318, 'positive', 1)
    gen_contour_polygon_xld (Contour, [LineRow0,LineRow1], [LineCol0,LineCol1])
    main
    *直线测量
    create_metrology_model (MetrologyHandle)
    add_metrology_object_line_measure (MetrologyHandle, StartRow, StartCol, EndRow, EndCol, 100, 20, 1, 30, [], [], Index)
    *搜索宽度
    set_metrology_object_param (MetrologyHandle, Index, 'measure_length1', RuleWidth)
    *有效搜索高度
    set_metrology_object_param (MetrologyHandle, Index, 'measure_length2', RuleHeight)
    *搜索间隔
    set_metrology_object_param (MetrologyHandle, Index, 'measure_distance', RuleSpace)
    *边缘阈值
    set_metrology_object_param (MetrologyHandle, Index, 'measure_threshold', RuleThd)
    *边缘选择
    set_metrology_object_param (MetrologyHandle, Index, 'measure_select',RuleSeleP)
    *过度方式
    set_metrology_object_param (MetrologyHandle, Index, 'measure_transition', RuleMode)
    *对图像进行测量
    apply_metrology_model (Image, MetrologyHandle)
    *测量点
    get_metrology_object_measures (Contours, MetrologyHandle, Index, RuleMode, PointRows, PointCols)
    *测量直线
    get_metrology_object_result (MetrologyHandle, Index, 'all', 'result_type', ['row_begin', 'column_begin', 'row_end', 'column_end'], Parameter)
    *外围矩形
    angle_lx (StartRow, StartCol, EndRow, EndCol, Angle)
    length1:=sqrt((StartCol-EndCol)*(StartCol-EndCol)+(StartRow-EndRow)*(StartRow-EndRow))
    gen_rectangle2 (Rectangle, (StartRow+EndRow)/2, (StartCol+EndCol)/2, Angle, length1/2, RuleWidth)
    LineRow0:=Parameter[0]
    LineCol0:=Parameter[1]
    LineRow1:=Parameter[2]
    LineCol1:=Parameter[3]
    return ()
    MeasureLine
    *圆测量
    create_metrology_model (MetrologyHandle)
    add_metrology_object_circle_measure (MetrologyHandle, Row, Column, Radius, 20, 5, 1, 30, [], [], Index)
    *搜索宽度
    set_metrology_object_param (MetrologyHandle, Index, 'measure_length1', RuleWidth)
    *有效搜索高度
    set_metrology_object_param (MetrologyHandle, Index, 'measure_length2', RuleHeight)
    *搜索间隔
    set_metrology_object_param (MetrologyHandle, Index, 'measure_distance', RuleSpace)
    *边缘阈值
    set_metrology_object_param (MetrologyHandle, Index, 'measure_threshold', RuleThd)
    *边缘选择
    set_metrology_object_param (MetrologyHandle, Index, 'measure_select',RuleSeleP)
    *过度方式
    set_metrology_object_param (MetrologyHandle, Index, 'measure_transition', RuleMode)
    *对图像进行测量
    apply_metrology_model (Image, MetrologyHandle)
    *测量点
    get_metrology_object_measures (Contours, MetrologyHandle, Index, RuleMode, PointRows, PointCols)
    *测量圆
    get_metrology_object_result (MetrologyHandle, Index, 'all', 'result_type', ['row', 'column', 'radius'], Parameter)
    CircleRow:=Parameter[0]
    CircleCol:=Parameter[1]
    CircleRad:=Parameter[2]
    return ()
    MeasureCircle
  • 相关阅读:
    伪元素:placeholder-shown&&:focus-within
    伪元素:target
    伪元素:focus-within
    MpVue解析
    ESLint在vue中的使用
    vue动态 设置类名
    Java 文件流操作.
    SpringMVC 与 REST.
    基于Nginx和Zookeeper实现Dubbo的分布式服务
    基于Spring的RPC通讯模型.
  • 原文地址:https://www.cnblogs.com/yangmengke2018/p/12737988.html
Copyright © 2011-2022 走看看