Halcon算子应用和技巧8

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


前言

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

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


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

一、Halcon应用?

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

二、算子汇总

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

三、应用算子

71. crop_domain_rel()

先上代码:

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image(Image, 'D:/HALCON_learn/理论/71-80/工件.png')
get_image_size(Image, Width, Height)
set_display_font(WindowHandle, 16, 'mono', 'true', 'false')
disp_message(WindowHandle, '尺寸是'+Width+'*' + Height, 'window', 219, 236, 'black', 'true')
crop_domain_rel(Image, ImagePart, 20, -1, -1, -1)
get_image_size(ImagePart, Width2, Height2)
disp_message(WindowHandle, '尺寸是'+Width2+'*' + Height2, 'window', 219, 236, 'black', 'true')

解析
算子精确裁剪图像尺寸,从边缘裁剪像素,一个像素也可以裁剪;右图为从上裁剪20像素的结果
PS:算子裁剪顺序上 左 下 右
在这里插入图片描述


72. move_region()

先上代码:

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image(Image, 'D:/HALCON_learn/理论/71-80/工件.png')
gen_rectangle1(Rectangle, 161,20, 228,195)
move_region(Rectangle, RegionMoved, 30, 30)
set_display_font(WindowHandle, 16, 'mono', 'true', 'false')

解析
将区域从左上角开始,按照指定参数平移区域
PS:下 右为正方向,上 左 为反方向
在这里插入图片描述


73. union_collinear_contours_xld()

先上代码:

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image(Image, 'D:/HALCON_learn/理论/71-80/光伏板.png')
rgb1_to_gray(Image, GrayImage)
edges_sub_pix(GrayImage, Edges, 'canny', 3, 20, 40)
union_collinear_contours_xld(Edges, UnionContours, 5, 0.02, 500, 0.1, 'attr_keep')

解析
近似共线的轮廓组合在一起,右图为合并后结果
PS:具体的参数设置参考其他博文
在这里插入图片描述


74. tuple_substr ()

先上代码:

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'D:/HALCON_learn/理论/71-80/工件.png')
string := '这是一个工件并带有多个圆孔'
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_disp_text(string, 'image',50, 60, 'black', [], [])
*截取文字
tuple_substr (string, 2, 5, Substring)
dev_disp_text(Substring, 'image',80, 80, 'black', [], [])
* 该方法有同样的作用截取
string2 := string{1:5}
dev_disp_text(string2, 'image',120, 80, 'black', [], [])
*数组使用 这两句自行复制运行看效果
tuple_substr ([string,string2], [0,3], [3,6], Substring3)
dev_disp_text(Substring3, 'window', 400, 300, 'black', [], [])

解析:
算子作用是从字符串中截取文字
PS:注意数字从0开始,比如【0,5】,第五个数字位置文字也是要取的,注意和python区分
PS:tuple_substr这个函数值适用于字符串数组,不能用于其他类型数组
在这里插入图片描述


75. tuple_string ()

先上代码:

row := [15465, 29258, 31079, 48178, 53557]
tuple_string (row, 'f', String)
* ['546', '925', '107', '817', '355']
tuple_substr (String, 1, 3, Substring1)
* 通过这个方式可以取数组中的元素
Substring5 := row[1:3]

解析:
作用将数组转字符串
Substring1 是 -> [‘546’, ‘925’, ‘107’, ‘817’, ‘355’]
Substring5 是 ->[29258, 31079, 48178]
这个就不放图了,自行运行观看


76. open_file ()

先上代码:

* 创建文件句柄
open_file ('D:/HALCON_learn/code/xls.xls', 'append', FileHandle)
* 第一行一列写入字符a
fwrite_string (FileHandle, 'a\t')
* 第一行二列写入字符a
fwrite_string (FileHandle, 'b\n')
* 第二行一列写入字符c
fwrite_string (FileHandle, 'c\t')
* 第二行二列写入字符d
fwrite_string (FileHandle, 'c\n')
close_file (FileHandle)

解析:
创建xls的excel文件,用于记录数据
PS:‘\t’ 换列 ‘\n’ 换行,写入模式采用’append’,若xls.xls文件不存在系统会自动创建
PS:‘input’ 作用打开文件; ‘append’ 在原有文件基础上追加文字; ‘output’ 每次会清空内容,重新写入
在这里插入图片描述


77. fit_circle_contour_xld ()

先上代码:

* *******************
* 读图
* *******************
read_image(Image1, 'D:/HALCON_learn/理论/71-80/test')
rgb1_to_gray(Image1, GrayImage)
median_image(GrayImage, ImageMedian, 'circle', 3, 'mirrored')
mean_image(ImageMedian, ImageMean, 13, 13)
dyn_threshold(ImageMedian, ImageMean, RegionDynThresh, 5, 'light')
connection (RegionDynThresh, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 11200, 99999)
count_obj(SelectedRegions, Number)
select_obj(SelectedRegions, ObjectSelected, 1)
fill_up (ObjectSelected, RegionFillUp1)
select_obj(SelectedRegions, ObjectSelected1, 2)
fill_up (ObjectSelected1, RegionFillUp2)
* *******************
* 定位
* *******************
difference(RegionFillUp1, RegionFillUp2, RegionDifference)
skeleton (RegionDifference, Skeleton)
gen_contour_region_xld(Skeleton, Contours, 'border')
fit_circle_contour_xld (Contours, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius1, StartPhi1, EndPhi, 

解析:
圆拟合xld轮廓,请续看算子 78,图三是骨架
在这里插入图片描述


78. gen_circle_contour_xld ()

先上代码:

* *******************
* 读图
* *******************
read_image(Image1, 'D:/HALCON_learn/理论/71-80/test')
rgb1_to_gray(Image1, GrayImage)
median_image(GrayImage, ImageMedian, 'circle', 3, 'mirrored')
mean_image(ImageMedian, ImageMean, 13, 13)
dyn_threshold(ImageMedian, ImageMean, RegionDynThresh, 5, 'light')
connection (RegionDynThresh, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 11200, 99999)
count_obj(SelectedRegions, Number)

select_obj(SelectedRegions, ObjectSelected, 1)
fill_up (ObjectSelected, RegionFillUp1)
select_obj(SelectedRegions, ObjectSelected1, 2)
fill_up (ObjectSelected1, RegionFillUp2)
* *******************
* 定位
* *******************
difference(RegionFillUp1, RegionFillUp2, RegionDifference)
skeleton (RegionDifference, Skeleton)
gen_contour_region_xld(Skeleton, Contours, 'border')
fit_circle_contour_xld (Contours, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius1, StartPhi1, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row1, Column1, Radius1, 0, 6.28318, 'positive', 1)

解析:
根据参数生成XLD的圆
图一是骨架 图二是根据fit_circle_contour_xld拟合结果生成的圆,图三是 xld 圆穿过像素区域
在这里插入图片描述


79. gen_cross_contour_xld ()

先上代码:

* *******************
* 定位 (续算子78 code)
* *******************
difference(RegionFillUp1, RegionFillUp2, RegionDifference)
skeleton (RegionDifference, Skeleton)
gen_contour_region_xld(Skeleton, Contours, 'border')
fit_circle_contour_xld (Contours, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius1, StartPhi1, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row1, Column1, Radius1, 0, 6.28318, 'positive', 1)
gen_cross_contour_xld (Cross, Row1, Column1, 100, 0)

解析:
在指定位置生成xld十字交叉标记
在这里插入图片描述


80. dump_window_image()

先上代码:

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'D:/HALCON_learn/理论/71-80/工件.png')
rgb1_to_gray (Image, GrayImage)
threshold(GrayImage, Region, 128, 200)
dump_window_image(Image1,WindowHandle )
write_image (Image1, 'tiff', 0, 'D:/HALCON_learn/理论/71-80/window_image')

解析:
将窗口中显示的内容,以图像的方式保存
PS:对于一些不是image格式的图像可以采用这种方式保存
PS:配合write_image使用
在这里插入图片描述


以上内容陆续更新。。。

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

以上内容陆续更新。。。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Halcon算子中文手册CHM是Halcon系统提供的一种在线帮助文档格式。CHM是“Compiled HTML Help”的缩写,即编译的HTML帮助文档。 Halcon算子中文手册CHM是为了方便中文用户学习和使用Halcon算子而特别准备的。它包含了Halcon算子的详细说明、用法示例以及相关函数的参数说明。通过查阅CHM手册,用户可以了解各种算子的作用、输入输出参数的含义,以及如何在Halcon中使用它们。这对于Halcon初学者来说是一个很好的学习工具。 CHM手册的使用非常简单方便,用户只需要在Halcon界面中点击相关算子的帮助按钮,就可以快速打开相应的CHM手册页面。在CHM手册页面中,用户可以通过目录、索引、搜索等方式浏览和查找需要的信息。CHM手册的页面包含了算子的详细解释和代码示例,帮助用户更好地理解和应用算子Halcon算子中文手册CHM的提供,为中文用户提供了一种方便、快捷的学习和查阅资源。它不仅节省了用户在网上搜索资料的时间,还提供了更专业、系统、全面的算子说明,从而帮助用户更加高效地使用Halcon进行图像处理和分析。无论是新手还是有一定经验的用户,都能通过CHM手册快速查找所需的信息,提升开发和应用的效率。 ### 回答2: Halcon算子中文手册CHM是一个用于参考和学习Halcon算子的详细文件。CHM是Halcon提供的一种帮助文档格式,可以在Windows操作系统上浏览和搜索。 这个中文手册提供了Halcon算子的描述、参数、使用方法以及示例代码等内容。用户可以通过搜索或按照算子分类来查找所需的算子。同时,手册还提供了算子的示例图像,帮助用户理解算子的作用和效果。 使用这个手册,用户可以更加方便地了解和学习Halcon算子。无论是初学者还是有一定经验的用户,都可以通过手册来查找所需的算子,并且了解该算子的具体用法。手册的详细信息和示例代码有助于用户更好地理解算子的功能和使用场景。 总之,Halcon算子中文手册CHM是一个非常有价值的工具,为用户提供了方便快捷的查阅方式,帮助用户学习和运用Halcon算子,提升图像处理的能力。 ### 回答3: Halcon算子中文手册CHM是Halcon软件的一个辅助文档,用于帮助用户快速查询和理解Halcon算子的使用方法和功能。CHM是一种经典的Windows帮助文档格式,可以在Windows系统上直接打开和阅读。 Halcon算子中文手册CHM包含了Halcon软件中各种不同类型的算子的详细说明和示例代码,涵盖了图像处理、机器视觉、测量、工业自动化等众多领域。用户可以根据自己的需求,通过关键字搜索或者按照分类浏览的方式找到所需的算子,并了解其参数设置和使用方法。 使用Halcon算子中文手册CHM可以帮助用户更方便地学习和掌握Halcon算子的使用技巧,从而更高效地完成图像处理和分析任务。用户可以通过手册中的示例代码了解算子的实际应用场景,并根据自己的需求进行修改和优化。 总之,Halcon算子中文手册CHM是一本非常实用的参考资料,对于使用Halcon进行图像处理的用户来说,是不可或缺的帮助工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值