转战Halcon日记【9】-- 模板匹配
作者:互联网
模板匹配是一个用处非常大的算子,可以说是传统机器视觉检查上的一个核心
我们以一张名片来举例子,我们以zoomin这个logo为模板
输入图
模板选择
实现的效果(各个角度都可匹配)
·
我们上一下代码
*读取图片 read_image(Image, 'mingpian.png') *提取模板图片 gen_rectangle1 (ROI_0, 391.44, 1074.71, 487.6, 1300.8) area_center(ROI_0, Area, Row1, Column1) reduce_domain(Image, ROI_0, ImageReduced) *创建模板 *第一个参数是模板图片,第二个参数是空间金字塔的层数(之后讲解这个参数啥意思) *第三个参数是角度的起始值,第四个参数是角度的结束值,第五个参数是角度的步长,也就是说,我们模板0-360°范围都可以检测的,第五个参数一般默认auto *第六个参数是模板的最小比例,第七个参数是模板的最大比例,也就是说,我们模板在0.9-1.1倍的大小范围内都可以检测的,第八个参数是比例的步长,也默认auto *后面的参数都默认就行,都是优化匹配速度之类的 *最后一个参数返回的是创建之后的模板 create_scaled_shape_model(ImageReduced, 'auto', 0, rad(360), 'auto', 0.9, 1.1, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID) *显示创建的模板的轮廓 get_shape_model_contours(ModelContours, ModelID, 1) *生成几个相关的roi区域 gen_rectangle1 (ROI_1, 395.349, 481.381, 526.205, 877.684) gen_rectangle1 (ROI_2, 600.716, 491.329, 656.536, 966.212) gen_rectangle1 (ROI_3, 671.175, 498.884, 714.741, 991.456) gen_rectangle1 (ROI_4, 722.91, 490.72, 778.73, 1100.31) gen_rectangle1 (ROI_5, 604.463, 1157.46, 782.814, 1342.52) * Image Acquisition 01: Code generated by Image Acquisition 01 * 打开相机,这个在助手里面直接可以插入代码 open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[1] XW200', 0, -1, AcqHandle) grab_image_start (AcqHandle, -1) while (true) *取图 grab_image_async (Image1, AcqHandle, -1) * Image Acquisition 01: Do something * 执行模板查找 * 第一个参数是需要查找的图片,第二个参数是刚刚创建的模板 * 第三个第四个参数是起始的角度 * 第五个参数是最小的匹配分数,也就是说,大于这个匹配分数才认为是模板图片 * 第六个参数是匹配的个数,如果为0的话,就是有多少个就匹配多少个 * 第七个参数是最大的重叠区域,假设匹配出两个模板,如果iou超过这个值就认为是一个 * 第八九十个参数默认就行 * 第十一十二十三个参数分别是返回的模板的位置和角度 find_shape_model(Image1, ModelID, 0, rad(360), 0.3, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score) if (Score>0) * 获得一个旋转矩阵 * 前三个参数参数是原始点的坐标和角度 * 第四五六个参数是变换后的坐标和角度 * 第七个参数是返回的旋转矩阵,根据前六个参数就能得到这个矩阵 vector_angle_to_rigid(0, 0, 0, Row, Column, Angle, HomMat2D) * 根据旋转矩阵进行仿射变换(为了显示用) affine_trans_contour_xld(ModelContours, ContoursAffineTrans, HomMat2D) gen_rectangle2(Rectangle, Row, Column, Angle, 200, 100) vector_angle_to_rigid(Row1, Column1, 0, Row, Column, Angle, HomMat2D1) affine_trans_region(ROI_1, RegionAffineTrans1, HomMat2D1, 'nearest_neighbor') affine_trans_region(ROI_2, RegionAffineTrans2, HomMat2D1, 'nearest_neighbor') affine_trans_region(ROI_3, RegionAffineTrans3, HomMat2D1, 'nearest_neighbor') affine_trans_region(ROI_4, RegionAffineTrans4, HomMat2D1, 'nearest_neighbor') affine_trans_region(ROI_5, RegionAffineTrans5, HomMat2D1, 'nearest_neighbor') endif endwhile close_framegrabber (AcqHandle)
看看界面截图
标签:ROI,--,auto,affine,Halcon,参数,gen,模板 来源: https://www.cnblogs.com/guligedong-rose/p/16467277.html