halcon-distance_cc计算两个轮廓之间最小和最大的距离

 

 

在HDevelop中

复制代码
read_image (Image9, 'D:/bb/tu/9.jpg')
rgb1_to_gray (Image9, GrayImage)

threshold (GrayImage, Region, 200, 255)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 15400, 15500)
smallest_rectangle1 (SelectedRegions, Row1, Column1, Row2, Column2)
*返回最小外接正矩形数据
gen_rectangle1 (Rectangle, Row1+10, Column1-10, Row2-10, Column2+10)
*创建一个平行于坐标轴的矩形区域
*说明:行往里缩小的目的:亚像素边缘时可以去掉上下的边
reduce_domain (GrayImage, Rectangle, ImageReduced)
**获取区域图像
edges_sub_pix (ImageReduced, Edges, 'canny', 1, 20, 40)
*亚像素边缘

sort_contours_xld (Edges, SortedContours, 'upper_left', 'true', 'column')

select_obj (Edges, ObjectSelected, 1)
select_obj (Edges, ObjectSelected1, 2)

get_contour_xld (ObjectSelected, Row, Col)
get_contour_xld (ObjectSelected1, Row3, Col1)

distance_cc (ObjectSelected, ObjectSelected1, 'point_to_point', DistanceMin, DistanceMax)
*计算两个轮廓之间最小和最大的距离
*参数1:第一个轮廓
*参数2:第二个输入轮廓
*参数3:距离计算模式
*      'point_to_point'     确定轮廓线之间的最小和最大距离
*      'point_to_segment'   轮廓线段之间的实际最小距离
*参数4:返回两个轮廓之间的最小距离
*参数5:两个轮廓之间的最大距离
复制代码

 

 

 

 


在QtCreator中

  HObject  ho_Image9, ho_GrayImage, ho_Region, ho_ConnectedRegions;
  HObject  ho_SelectedRegions, ho_Rectangle, ho_ImageReduced;
  HObject  ho_Edges, ho_SortedContours, ho_ObjectSelected;
  HObject  ho_ObjectSelected1;
  HTuple  hv_Row1, hv_Column1, hv_Row2, hv_Column2;
  HTuple  hv_Row, hv_Col, hv_Row3, hv_Col1, hv_DistanceMin;
  HTuple  hv_DistanceMax;
复制代码
  ReadImage(&ho_Image9, "D:/bb/tu/9.jpg");
  Rgb1ToGray(ho_Image9, &ho_GrayImage);

  Threshold(ho_GrayImage, &ho_Region, 200, 255);
  Connection(ho_Region, &ho_ConnectedRegions);
  SelectShape(ho_ConnectedRegions, &ho_SelectedRegions, "area", "and", 15400, 15500);
  SmallestRectangle1(ho_SelectedRegions, &hv_Row1, &hv_Column1, &hv_Row2, &hv_Column2);
  //返回最小外接正矩形数据
  GenRectangle1(&ho_Rectangle, hv_Row1+10, hv_Column1-10, hv_Row2-10, hv_Column2+10);
  //创建一个平行于坐标轴的矩形区域
  //说明:行往里缩小的目的:亚像素边缘时可以去掉上下的边
  ReduceDomain(ho_GrayImage, ho_Rectangle, &ho_ImageReduced);
  //*获取区域图像
  EdgesSubPix(ho_ImageReduced, &ho_Edges, "canny", 1, 20, 40);
  //亚像素边缘

  SortContoursXld(ho_Edges, &ho_SortedContours, "upper_left", "true", "column");

  SelectObj(ho_Edges, &ho_ObjectSelected, 1);
  SelectObj(ho_Edges, &ho_ObjectSelected1, 2);

  GetContourXld(ho_ObjectSelected, &hv_Row, &hv_Col);
  GetContourXld(ho_ObjectSelected1, &hv_Row3, &hv_Col1);

  DistanceCc(ho_ObjectSelected, ho_ObjectSelected1, "point_to_point", &hv_DistanceMin, 
      &hv_DistanceMax);
  //计算两个轮廓之间最小和最大的距离
  //参数1:第一个轮廓
  //参数2:第二个输入轮廓
  //参数3:距离计算模式
  //     'point_to_point'     确定轮廓线之间的最小和最大距离
  //     'point_to_segment'   轮廓线段之间的实际最小距离
  //参数4:返回两个轮廓之间的最小距离
  //参数5:两个轮廓之间的最大距离
复制代码

 

 

 

 

 

posted @   天子骄龙  阅读(1880)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-03-22 C++析构函数
点击右上角即可分享
微信分享提示

目录导航