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
  • 相关阅读:
    Android 富文本框实现 RichEditText
    mmap和普通文件读写的区别和比较 & mmap的注意点
    exit和_exit的区别
    绑定线程到特定CPU处理器
    软中断与硬中断 & 中断抢占 中断嵌套
    线程与信号处理
    内核信号处理 & CPU8个通用寄存器
    SIGSEGV 和 SIGBUS & gdb看汇编
    Linux内核态用户态相关知识 & 相互通信
    Linux进程空间分布 & 上下文
  • 原文地址:https://www.cnblogs.com/yangmengke2018/p/12737988.html
Copyright © 2011-2022 走看看