因爱智能

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

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

代码如下:

[plain] view plain copy 在CODE上查看代码片派生到我的代码片

  1.  select_obj (SymbolXLDs, SymbolXLD, i+1)  
  2.  get_contour_xld (SymbolXLD, Row, Col)  
  3.  get_string_extents (WindowHandle, DecodedDataStrings[i], Ascent, Descent, TxtWidth, TxtHeight)  
  4.  disp_message (WindowHandle, DecodedDataStrings[i], 'image',20, 20, 'red', 'true')  
  5.          
  6.  area_center_xld (SymbolXLD, Area, Row1, Column, PointOrder)  
  7.  *获取xld参数  
  8.  elliptic_axis_xld (SymbolXLD, Ra, Rb, Phi)  
  9.  *外接椭圆并判断方向  
  10.  bin_threshold (ImageRectifiedFixed, Region)  
  11.  *自动灰度直方块图  
  12.  connection (Region, ConnectedRegions1)  
  13.  *求联通区域  
  14.  select_shape (ConnectedRegions1, SelectedRegions, 'area', 'and', 15441.5, 21905)  
  15.  *选择特征直方块图  
  16.  orientation_region (SelectedRegions, Phi_1)  
  17.  *求特征的方向  
  18.  area_center (SelectedRegions, Area_1, Row_1, Column_1)   
  19.  *求特征的中心  
  20.   
  21.  dev_set_line_width (3)    
  22.  dev_set_draw ('margin')   
  23.  dev_set_color ('blue')  
  24.  Length := 80    
  25. disp_arrow (WindowHandle, Row1[0], Column[0], Row1[0] - Length * sin(Phi[0]), Column[0] + Length * cos(Phi[0]), 4)    
  26. disp_message (WindowHandle, deg(Phi[0])$'3.1f' + ' deg', 'image', Row1[0], Column[0] - 100, 'black', 'false')    
  27.    
  28. 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)    
  29. disp_message (WindowHandle, deg(Phi_1[0])$'3.1f' + '度', 'image', Row_1[0], Column_1[0] - 100, 'blue', 'false')    

顶1 踩0

评论