基于halcon的HSV颜色匹配实例

HSV颜色识别

原图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

dev_update_off ()
dev_close_window ()
*颜色数组
FuseColors := ['Orange','Red','Blue','Yellow','Green']
*画笔颜色数组
DisplayColors := ['coral','red','blue','goldenrod','forest green']
* HSV模型中H分量: Orange 10-30, Red 0-10,Blue 125-162,Yellow 30-64,Green 96-128 ...
HueRanges := [10,30,0,10,125,162,30,64,96,128]
read_image (Image, 'color_fuses_00.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

*1、给颜色空间转换创建查找表
create_color_trans_lut ('hsv', 'from_rgb', 8, ColorTransLUTHandle)
Imagepath := 'color_fuses_0'
for i := 0 to 4 by 1
    read_image (Image1, Imagepath+i)
    dev_display (Image1)
    dev_set_draw ('margin')
    dev_set_line_width (3)
    *2、RGB图像分解R 、G 、 B 通道
    decompose3 (Image1, ImageR, ImageG, ImageB)
    *3、使用预先生成的查找表进行颜色空间转换。
    apply_color_trans_lut (ImageR, ImageG, ImageB, ImageResultH, ImageResultS, ImageResultV, ColorTransLUTHandle)
    *4、使用S分量提取保险丝区域
    threshold (ImageResultS, Regions, 65, 255)
    *5、在H分量中截取保险丝区域
    reduce_domain (ImageResultH, Regions, ImageReducedH)
    for j := 0 to |FuseColors|-1 by 1
        threshold (ImageReducedH, CurrentFuseRegion, HueRanges[2*j], HueRanges[2*j+1])
        connection (CurrentFuseRegion, ConnectedRegions)     
        fill_up (ConnectedRegions, RegionFillUp)
        select_shape (RegionFillUp, SelectedRegions, 'area', 'and', 5000, 20000)
        shape_trans (SelectedRegions, RegionTrans, 'convex')       
        smallest_rectangle2 (RegionTrans, Row1, Column1, Phi, Length1, Length2)
        dev_set_color (DisplayColors[j])
        dev_display (RegionTrans)
        for k :=0 to |Row1|-1 by 1
            set_tposition (WindowHandle, Row1[k], Column1[k]-0.4*Length1[k])
            write_string (WindowHandle, FuseColors[j]+(k+1))
        endfor
    endfor
    disp_message (WindowHandle, '颜色识别结果_'+(i+1), 'window', 10, 10, 'black', 'true')
    dump_window (WindowHandle, 'png', '颜色识别结果_'+(i+1))
    stop ()
endfor

结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值