ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

halcon-实例:根据颜色提取想要的对象

2022-05-02 03:00:18  阅读:141  来源: 互联网

标签:提取 Image hv SelectedRegions Yellow halcon 实例 ho ConnectedRegions


 

 实例目的:提取最上面黄色的线

在HDevelop中

dev_close_window ()
read_image (Image, 'D:/bb/tu/8.png')
get_image_size (Image, Width, Height)
decompose3 (Image, Red, Green, Blue)
    
    *将RGB三通道数据转化为HSV色彩空间的三通道图像数据
    *HSV:看https://blog.csdn.net/xiaoyafang123/article/details/113029596
    trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
    
    对HSV图像中的饱和度通道进行阈值操作
    threshold (Saturation, HighSaturation, 200, 255)
    
    *获取上述阈值操作后区域中的色调通道图像数据
    reduce_domain (Hue, HighSaturation, HueHighSaturation)
    
    *对上述色调通道图像数据进行阈值处理
    threshold (HueHighSaturation, Yellow, 20, 30)
    
    *寻找连通域
    connection (Yellow, ConnectedRegions)
    
    *保留ConnectedRegions里的最大的区域
    select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 0)
    
    *对SelectedRegions进行闭运算操作
    closing_circle (SelectedRegions, Yellow, 3.5)
    
    *将Yellow区域里的图像剪切出来
    reduce_domain (Image, Yellow, ImageReduced)
    
    
    dev_open_window(10,10,Width, Height,'black',WindowHandle)
    dev_display(ImageReduced)
    

    

 

 


在Qt Creator中

  HObject  ho_Image, ho_Red, ho_Green, ho_Blue;
  HObject  ho_Hue, ho_Saturation, ho_Intensity, ho_HighSaturation;
  HObject  ho_HueHighSaturation, ho_Yellow, ho_ConnectedRegions;
  HObject  ho_SelectedRegions, ho_ImageReduced;
  HTuple  hv_Width, hv_Height, hv_WindowHandle;

 

  ReadImage(&ho_Image, "D:/bb/tu/8.png");
  GetImageSize(ho_Image, &hv_Width, &hv_Height);
  Decompose3(ho_Image, &ho_Red, &ho_Green, &ho_Blue);

  //将RGB三通道数据转化为HSV色彩空间的三通道图像数据
  //HSV:看https://blog.csdn.net/xiaoyafang123/article/details/113029596
  TransFromRgb(ho_Red, ho_Green, ho_Blue, &ho_Hue, &ho_Saturation, &ho_Intensity, 
      "hsv");

  //对HSV图像中的饱和度通道进行阈值操作
  Threshold(ho_Saturation, &ho_HighSaturation, 200, 255);

  //获取上述阈值操作后区域中的色调通道图像数据
  ReduceDomain(ho_Hue, ho_HighSaturation, &ho_HueHighSaturation);

  //对上述色调通道图像数据进行阈值处理
  Threshold(ho_HueHighSaturation, &ho_Yellow, 20, 30);

  //寻找连通域
  Connection(ho_Yellow, &ho_ConnectedRegions);

  //保留ConnectedRegions里的最大的区域
  SelectShapeStd(ho_ConnectedRegions, &ho_SelectedRegions, "max_area", 0);

  //对SelectedRegions进行闭运算操作
  ClosingCircle(ho_SelectedRegions, &ho_Yellow, 3.5);

  //将Yellow区域里的图像剪切出来
  ReduceDomain(ho_Image, ho_Yellow, &ho_ImageReduced);


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

 

 

标签:提取,Image,hv,SelectedRegions,Yellow,halcon,实例,ho,ConnectedRegions
来源: https://www.cnblogs.com/liming19680104/p/16214949.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有