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


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

    在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());

  • 相关阅读:
    git 删除所有提交下的某个文件
    Sublime Text 中文
    git 常用文件目录介绍
    设计模式之——单例模式
    Mysql系统知识梳理
    Spring系列之——使用了哪些设计模式
    JAVA基础之——三大特征、接口和抽象类区别、重载和重写区别、==和equals区别、JAVA自动装箱和拆箱
    集合系列问题
    做一个优秀的职场人才
    Spring系列之——Spring事务以及两大核心IOC和AOP
  • 原文地址:https://www.cnblogs.com/liming19680104/p/16214949.html
Copyright © 2020-2023  润新知