提示:若没有查找的算子,可以评论区留言,会尽快更新
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()的结果
以上内容陆续更新。。。
内容如有错误之处,望不吝指出,谢谢
以上内容陆续更新。。。