• halconorientation_region返回区域的方向


    7.png

    在HDevelop中

    dev_update_off()
    dev_close_window ()
    read_image (Clip, 'D:/bb/tu/7.png')
    get_image_size (Clip, Width, Height)
    dev_open_window (0, 0, Width, Height, 'black', WindowID)
    dev_display (Clip)
    
    *设置窗口字体显示,字体大小,字体样式,粗体,斜体
    set_display_font (WindowID, 14, 'mono', 'true', 'false')
    
    disp_continue_message (WindowID, 'black', 'true')
    *在屏幕的右下角显示“Press Run  (F5) to  continue*注意:程序不会停止,一般下一句就是stop()
    *参数1:窗口句柄
    *参数3:如果设置为'true',则文本将写在白框内,这在不规则背景下很有用
    *参数2:定义文本颜色
    *      可选值: ‘black’, ‘blue’, ‘yellow’, ‘red’, ‘green’, ‘cyan’, ‘magenta’, 
    *              ‘forest green’, ‘lime green’, ‘coral’, ‘slate blue’
    
    stop()
    *暂停
    
    *二值化操作
    binary_threshold (Clip, Dark, 'max_separability', 'dark', UsedThreshold)
    
    *将区域进行连通处理
    connection (Dark, Single)
    
    *过滤出面积大小在【5000, 10000】范围里的区域
    select_shape (Single, Selected, 'area', 'and', 1600, 20000)
    
    dev_open_window (50, 50, Width, Height, 'black', WindowID1)
    dev_display (Selected)
    
    
    orientation_region (Selected, Phi)
    *返回区域的方向
    *参数1:区域
    *参数2:与x轴的夹角,其实就是elliptic_axis算子中的Phi
    
    *获取过滤后区域的面积,中心的行坐标,列坐标
    area_center (Selected, Area, Row, Column)
    
    *设置输出对象的线宽为3
    dev_set_line_width (3)
    
    *设置区域的填充方式
    dev_set_draw ('margin')
    Length := 80
    
    *设置输出对象的颜色为蓝色
    dev_set_color ('blue')
    
    
    disp_arrow (WindowID1, Row, Column, Row - Length * sin(Phi), Column + Length * cos(Phi), 2)
    *在窗口显示箭头
    *参数1:窗口句柄
    *参数2和参数3:起始行坐标, 起始列坐标
    *参数4和参数5:终止行坐标, 终止列坐标
    *参数6:箭头宽度

    在Qt Creator中

      HObject  ho_Clip, ho_Dark, ho_Single, ho_Selected;
      HTuple  hv_Width, hv_Height, hv_WindowID, hv_UsedThreshold;
      HTuple  hv_WindowID1, hv_Phi, hv_Area, hv_Row, hv_Column;
      HTuple  hv_Length;
      ReadImage(&ho_Clip, "D:/bb/tu/7.png");
      GetImageSize(ho_Clip, &hv_Width, &hv_Height);
      SetWindowAttr("background_color","black");
      OpenWindow(0,0,hv_Width,hv_Height,0,"visible","",&hv_WindowID);
      HDevWindowStack::Push(hv_WindowID);
      if (HDevWindowStack::IsOpen())
        DispObj(ho_Clip, HDevWindowStack::GetActive());
    
      //设置窗口字体显示,字体大小,字体样式,粗体,斜体
      set_display_font(hv_WindowID, 14, "mono", "true", "false");
    
      disp_continue_message(hv_WindowID, "black", "true");
      //在屏幕的右下角显示“Press Run  (F5) to  continue”
      //注意:程序不会停止,一般下一句就是stop()
      //参数1:窗口句柄
      //参数3:如果设置为'true',则文本将写在白框内,这在不规则背景下很有用
      //参数2:定义文本颜色
      //     可选值: ‘black’, ‘blue’, ‘yellow’, ‘red’, ‘green’, ‘cyan’, ‘magenta’,
      //             ‘forest green’, ‘lime green’, ‘coral’, ‘slate blue’
    
      // stop(...); only in hdevelop
      //暂停
    
      //二值化操作
      BinaryThreshold(ho_Clip, &ho_Dark, "max_separability", "dark", &hv_UsedThreshold);
    
      //将区域进行连通处理
      Connection(ho_Dark, &ho_Single);
    
      //过滤出面积大小在【5000, 10000】范围里的区域
      SelectShape(ho_Single, &ho_Selected, "area", "and", 1600, 20000);
    
      SetWindowAttr("background_color","black");
      OpenWindow(50,50,hv_Width,hv_Height,0,"visible","",&hv_WindowID1);
      HDevWindowStack::Push(hv_WindowID1);
      if (HDevWindowStack::IsOpen())
        DispObj(ho_Selected, HDevWindowStack::GetActive());
    
    
      OrientationRegion(ho_Selected, &hv_Phi);
      //返回区域的方向
      //参数1:区域
      //参数2:与x轴的夹角,其实就是elliptic_axis算子中的Phi
    
      //获取过滤后区域的面积,中心的行坐标,列坐标
      AreaCenter(ho_Selected, &hv_Area, &hv_Row, &hv_Column);
    
      //设置输出对象的线宽为3
      if (HDevWindowStack::IsOpen())
        SetLineWidth(HDevWindowStack::GetActive(),3);
    
      //设置区域的填充方式
      if (HDevWindowStack::IsOpen())
        SetDraw(HDevWindowStack::GetActive(),"margin");
      hv_Length = 80;
    
      //设置输出对象的颜色为蓝色
      if (HDevWindowStack::IsOpen())
        SetColor(HDevWindowStack::GetActive(),"blue");
    
    
      DispArrow(hv_WindowID1, hv_Row, hv_Column, hv_Row-(hv_Length*(hv_Phi.TupleSin())), 
          hv_Column+(hv_Length*(hv_Phi.TupleCos())), 2);
      //在窗口显示箭头
      //参数1:窗口句柄
      //参数2和参数3:起始行坐标, 起始列坐标
      //参数4和参数5:终止行坐标, 终止列坐标
      //参数6:箭头宽度

  • 相关阅读:
    Hash
    字符串hash
    NOIp 2014解方程
    NOIp2014 寻找道路
    NOIp2013火柴排队
    用scanf("%d",)读入long long类型
    lis问题
    西江月·证明
    计算系数
    积木大赛&PLA-Postering
  • 原文地址:https://www.cnblogs.com/liming19680104/p/16198625.html
Copyright © 2020-2023  润新知