halcon-distance_pr计算点和区域之间的距离

 

 

在HDevelop中

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

threshold (GrayImage, Region, 200, 255)
connection (Region, ConnectedRegions)

select_obj (ConnectedRegions, ObjectSelected, 1)
select_obj (ConnectedRegions, ObjectSelected1, 2)
area_center (ObjectSelected, Area, Row, Column)
area_center (ObjectSelected1, Area1, Row1, Column1)

get_image_size (Image9, Width, Height)
dev_open_window(10,10,Width, Height,'black',WindowHandle)
dev_display(ObjectSelected)

dev_open_window(10,100,Width, Height,'black',WindowHandle1)
dev_display(ObjectSelected1)

distance_pr (ObjectSelected1, Row, Column, DistanceMin, DistanceMax)
*计算点和区域之间的距离
*如果一个点位于该区域内,其最小距离为零
*参数1:输入区域
*参数2:点的行坐标-y
*参数3:点的列坐标
*参数4:返回点和区域之间的最小距离
*参数5:返回点和区域之间的最大距离
复制代码

 

 


在QtCreator中

  HObject  ho_Image9, ho_GrayImage, ho_Region, ho_ConnectedRegions;
  HObject  ho_ObjectSelected, ho_ObjectSelected1;
  HTuple  hv_Area, hv_Row, hv_Column, hv_Area1;
  HTuple  hv_Row1, hv_Column1, hv_Width, hv_Height, hv_WindowHandle;
  HTuple  hv_WindowHandle1, hv_DistanceMin, 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);

  SelectObj(ho_ConnectedRegions, &ho_ObjectSelected, 1);
  SelectObj(ho_ConnectedRegions, &ho_ObjectSelected1, 2);
  AreaCenter(ho_ObjectSelected, &hv_Area, &hv_Row, &hv_Column);
  AreaCenter(ho_ObjectSelected1, &hv_Area1, &hv_Row1, &hv_Column1);

  GetImageSize(ho_Image9, &hv_Width, &hv_Height);
  SetWindowAttr("background_color","black");
  OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle);
  HDevWindowStack::Push(hv_WindowHandle);
  if (HDevWindowStack::IsOpen())
    DispObj(ho_ObjectSelected, HDevWindowStack::GetActive());

  SetWindowAttr("background_color","black");
  OpenWindow(10,100,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle1);
  HDevWindowStack::Push(hv_WindowHandle1);
  if (HDevWindowStack::IsOpen())
    DispObj(ho_ObjectSelected1, HDevWindowStack::GetActive());

  DistancePr(ho_ObjectSelected1, hv_Row, hv_Column, &hv_DistanceMin, &hv_DistanceMax);
  //计算点和区域之间的距离
  //如果一个点位于该区域内,其最小距离为零
  //参数1:输入区域
  //参数2:点的行坐标-y
  //参数3:点的列坐标
  //参数4:返回点和区域之间的最小距离
  //参数5:返回点和区域之间的最大距离
复制代码

 

 

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

目录导航