Halcon算子应用和技巧3

提示:若没有查找的算子,可以评论区留言,会尽快更新


前言

提示:可以使用搜索小工具搜索对应算子名称:

本篇博文主要用于记录学习Halcon中算子的应用场景,及其使用代码和图像展示。只讲通俗易懂使用方法,不讲原理,不讲原理,不讲原理,重要的事情说三遍。


提示:以下是本篇文章正文内容,下面案例可供参考,注意参数坐标的使用,能帮助你理解算子

一、Halcon应用?

Halcon 是一个强大的图像处理工具,该工具是为了解决机器视觉项目任务而创建的。

二、算子汇总

每一博文仅展示10个算子,点击此链接进行查询所有算子,并点击对应算子跳转相应博文。
跳转链接

三、应用算子

21. threshod()

先上代码:

read_image (Image,'data/codes.jpg')
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, DarkArea, 0, 128)

解析:
全局阈值:选定属于某一个灰度值范围的区域
在这里插入图片描述


22. dyn_threshod()

先上代码:

read_image (Image, 'data/text.jpg')
*将图像转换为灰度
rgb1_to_gray (Image, GrayImage)
*使用平滑滤波器对原始图像进行适当平滑
mean_image (ImageResult, ImageMean, 50,50)
*动态阈值分割,提取字符区域
dyn_threshold (ImageResult, ImageMean, RegionDynThresh, 4, 'not_equal')
dev_display (RegionDynThresh)

解析:
通过局部灰度值对比,对比原图和均值处理后的图像局部灰度值差异,差异大于设定值的被选出
PS:适合灰度值多样,不能使用单一灰度进行分割的图
PS:其使用一般结合mea_image()使用

在这里插入图片描述


23. concat_obj()

先上代码:

read_image (Image, 'data/text.jpg')
*将图像转换为灰度
rgb1_to_gray (Image, GrayImage)
*组合
concat_obj(Image, GrayImage, ObjectsConcat)

解析:
将不同的图像组合到一个类似数组一样的集合中,这个数组中就会包含一定数量的图,看下图中红色框,多出来一个 [ ] 标志
在这里插入图片描述


24. difference()

先上代码:

*区域差
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
dev_set_color('red')
draw_rectangle1(WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)
dev_set_color('white')
draw_rectangle1(WindowHandle, Row2, Column2, Row3, Column3)
gen_rectangle1(Rectangle1, Row2, Column2, Row3, Column3)
dev_set_color('green')
difference(Rectangle, Rectangle1, RegionDifference)

解析:
区域之间的差。红色区域–白色区域=绿色区域

在这里插入图片描述


25. gen_circle_sector()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
gen_circle_sector(CircleSector, 800, 400, 500, 0, rad(60))
reduce_domain(Image, CircleSector, ImageReduced)

解析:
生成扇形区域
PS:其一般配合reduce_domain()使用
PS:即使起始点弧度值大于终止点弧度值,依然是逆时针区域。
在这里插入图片描述


26. invert_image()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
rgb1_to_gray(Image, GrayImage)
invert_image(GrayImage, ImageInvert)

解析:
图像黑变白,白变黑:图像反转
图像反转


27. complement()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
gen_rectangle1(Rectangle, 400, 600, 800, 900)
complement(Rectangle, RegionComplement)

解析:
反选区域;第三张图为区域反选结果
在这里插入图片描述


28. intersection()

先上代码:

dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
dev_set_color('red')
draw_rectangle1(WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)
dev_set_color('white')
draw_rectangle1(WindowHandle, Row2, Column2, Row3, Column3)
gen_rectangle1(Rectangle1, Row2, Column2, Row3, Column3)
dev_set_color('green')
intersection(Rectangle, Rectangle1, RegionIntersection)

解析:
求两个区域的交集,绿色部分就是交集
PS:输入也可以是图像
在这里插入图片描述


29. fill_up()

先上代码:

read_image(Image, 'E:/HALCON-22.11-Steady/examples/images/fabrik.png')
get_image_size(Image, Width, Height)
dev_close_window()
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(Image)
threshold(Image, Region, 128, 255)
select_shape(Region, SelectedRegions, 'rectangularity', 'and', 0.9, 1)
fill_up(SelectedRegions, RegionFillUp)

解析:
填充区域中包含的空洞,下图观察黑色区域被填充
在这里插入图片描述


30. union1()

先上代码:

read_image(Image, 'printer_chip/printer_chip_01')
threshold(Image, Region, 128, 255)
connection(Region, ConnectedRegions)
union1(ConnectedRegions, RegionUnion)

解析:
将打散的不同区域组合成一个整体;
左图是组合之前选中红色框中的部分区域;右图是组合后,鼠标点击相同部分,所有的区域被选中
PS:打散的区域是connection()的结果
在这里插入图片描述


以上内容陆续更新。。。

内容如有错误之处,望不吝指出,谢谢

以上内容陆续更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值