• halconbinary_threshold二进制阈值


    在HDevelop中

    1.jpg

      

    dev_update_off()
    
    read_image (Image, 'D:/bb/tu/ma.jpg')
    rgb1_to_gray(Image,Image1)
    *将RGB图像转换为灰度图像
    
    get_image_size (Image1, Width, Height)
    dev_open_window(10,10,Width, Height,'black',WindowHandle)
    
    binary_threshold (Image1, Region, 'max_separability', 'dark', UsedThresho)
    *二进制阈值,在同质照明的背景下对字符的分割很有用
    *该算法首先计算图像的直方图,然后使用统计矩来找到将像素划分为前景和背景的最佳阈值
    *此方法仅适用于字节和uint2图像
    *参数1:需要进行阈值的单通道图像 *参数2:处理后的区域 *参数3:分割方法 * 'max_separability' 调用灰度直方图的自动阈值 * 'smooth_histo' 直方图平滑 *参数4:'light' 选择灰度值大于或等于最佳阈值的所有像素* 'dark' 选择灰度值小于最佳阈值的所有像素
    *参数5:自动阈值使用的阈值 dev_display(Region) dev_open_window(10,100,Width, Height,'black',WindowHandle1) dev_display(Image1)

     

      

    在Qt Creator中

        HObject  ho_Image, ho_Image1, ho_Region;
        HTuple  hv_Width, hv_Height, hv_WindowHandle;
        HTuple  hv_UsedThresho, hv_WindowHandle1;
        ReadImage(&ho_Image, "D:/bb/tu/1.jpg");
        Rgb1ToGray(ho_Image, &ho_Image1);
        //将RGB图像转换为灰度图像
    
        GetImageSize(ho_Image1, &hv_Width, &hv_Height);
        SetWindowAttr("background_color","black");
        OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle);
        HDevWindowStack::Push(hv_WindowHandle);
    
        BinaryThreshold(ho_Image1, &ho_Region, "max_separability", "dark", &hv_UsedThresho);
        //二进制阈值,在同质照明的背景下对字符的分割很有用
        //参数1:需要进行阈值的单通道图像
        //参数2:处理后的区域
        //参数3:分割方法
        //      'max_separability'   最大限度的可分性,
        //      'smooth_histo'       直方图平滑
        //参数4:'light'    提取灰度值>UsedThreshold的作为区域
        //      'dark'     提取灰度值<UsedThreshold的作为区域
        //参数5:自动阈值使用的阈值
    
    
        if (HDevWindowStack::IsOpen())
          DispObj(ho_Region, 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_Image1, HDevWindowStack::GetActive());
      
        int t=hv_UsedThresho.I();
    
    
        qDebug()<<t;//117
     

  • 相关阅读:
    创意吃鱼法
    雅礼上课
    坏掉的项链Broken Necklace
    2018-04-02练习
    【11月12日】Hadoop架构
    【11月10日】Redis 主从复制技术
    【11月10日】Redis 缓存系统常见问题及解决方案
    【11月9日】Redis 持久化
    【11月7日】Redis核心对象和数据类型
    【11月7日】Redis简介
  • 原文地址:https://www.cnblogs.com/liming19680104/p/15962801.html
Copyright © 2020-2023  润新知