halcon学习笔记(13)——二维码识别及简单定位

前面说了利用halcon进行二维码的识别,这次进行二维码识别及方向定位,虽然二维码本身也有定位和方向性,但是我没有在halcon算子里找到这个函数或调出这个参数的方法;不过可以通过在二维码附近添加mark图形来进行角度和方向识别,这样在AGV小车应用中就可作为地标识别程序了,当然AGV小车应用的话很少是window系统,一般是嵌入式linux系统,虽然halcon支持linux系统,且QT也支持跨平台,不过不太熟linux系统如何操作,有待学习;所以要想真正应用在像亚马逊kiva机器人进行地标识别,还需要将做硬件处理,即将平台换为linux并且用低功率板子做开发;当然安卓也能开发;另外一切传感器厂商已经直接集成了二维码定位传感器,比如倍加福等,这种传感器体积小,精度高,稳定性好,but价格高;不过halcon毕竟是厂商的软件用起来还是要注意版权的问题,这点不如opencv了;好了废话说了这么多代码直接上了;主体还是前面讲的的二维码程序,这里指列出方向定位程序,处理图片如下:

halcon学习笔记(13)——二维码识别及简单定位_第1张图片

代码如下:

        select_obj (SymbolXLDs, SymbolXLD, i+1)
        get_contour_xld (SymbolXLD, Row, Col)
        get_string_extents (WindowHandle, DecodedDataStrings[i], Ascent, Descent, TxtWidth, TxtHeight)
        disp_message (WindowHandle, DecodedDataStrings[i], 'image',20, 20, 'red', 'true')
              
        area_center_xld (SymbolXLD, Area, Row1, Column, PointOrder)
        *获取xld参数
        elliptic_axis_xld (SymbolXLD, Ra, Rb, Phi)
        *外接椭圆并判断方向
        bin_threshold (ImageRectifiedFixed, Region)
        *自动灰度直方块图
        connection (Region, ConnectedRegions1)
        *求联通区域
        select_shape (ConnectedRegions1, SelectedRegions, 'area', 'and', 15441.5, 21905)
        *选择特征直方块图
        orientation_region (SelectedRegions, Phi_1)
        *求特征的方向
        area_center (SelectedRegions, Area_1, Row_1, Column_1) 
        *求特征的中心
 
        dev_set_line_width (3)  
        dev_set_draw ('margin') 
        dev_set_color ('blue')
        Length := 80  
       disp_arrow (WindowHandle, Row1[0], Column[0], Row1[0] - Length * sin(Phi[0]), Column[0] + Length * cos(Phi[0]), 4)  
       disp_message (WindowHandle, deg(Phi[0])$'3.1f' + ' deg', 'image', Row1[0], Column[0] - 100, 'black', 'false')  
        
       disp_arrow (WindowHandle, Row_1[0], Column_1[0], Row_1[0] - Length * sin(Phi_1[0]), Column_1[0] + Length * cos(Phi_1[0]), 4)  
       disp_message (WindowHandle, deg(Phi_1[0])$'3.1f' + '度', 'image', Row_1[0], Column_1[0] - 100, 'blue', 'false')  
     

你可能感兴趣的:(halcon)