HALCON 学习笔记1
1、筛选指定灰度的区域筛选出每组第一条柱子2、* 提取目标区域 read_image (Image, 0710sucai.png) *2.图像的预处理 **算法包括转灰度、滤波、形态学操作 *彩图转灰度 rgb1_to_gray (Image, GrayImage) *3.进行阈值分割 **阈值的范围8位灰度图中是0-255 16位灰度图0~^16-1 **阈值的范围通过灰度直方图来确定 threshold (GrayImage, Regions, 233, 255) *4.将区域对应的图片进行裁剪 reduce_domain (GrayImage, Regions, ImageReduced)2、筛选指定区域使用上一张练习的图像筛选出最高的4条read_image (Image, 0710sucai.png) rgb1_to_gray (Image, GrayImage) threshold (GrayImage, Region, 128, 255) //1.连通域 //阈值分割后的结果属于同一区域 connection (Region, ConnectedRegions) //2.特征筛选 select_shape (ConnectedRegions, SelectedRegions, height, and, 296.9, 391.26) //3.区域合并 union1 (SelectedRegions, RegionUnion) //4.裁剪区域 reduce_domain (GrayImage, RegionUnion, ImageReduced)3、简单二维码识别read_image (Image, 662.jpg) rgb1_to_gray (Image, GrayImage) create_bar_code_model ([], [], BarCodeHandle) find_bar_code (GrayImage, SymbolRegions, BarCodeHandle, auto, DecodedDataStrings) clear_bar_code_model (BarCodeHandle) dev_get_window (WindowHandle) set_display_font (WindowHandle, 36, mono, true, false) dev_disp_text (DecodedDataStrings, window, top, left, black, [], [])4、包装盒二维码识别填充区域内部的孔洞方式一形态学操作腐蚀erosion、膨胀dilation、打开先腐蚀后膨胀、关闭先膨胀后腐蚀//金属毛刺怎么去除打开方式二fill_up 填充孔洞read_image (Image, 图片.jpg) rgb1_to_gray (Image, GrayImage) threshold (GrayImage, Regions, 181, 255) connection (Regions, ConnectedRegions) select_shape (ConnectedRegions, SelectedRegions, width, and, 912.79, 1000) //reduce_domain (GrayImage, SelectedRegions, ImageReduced) //填充区域内部的孔洞 //方式一 //形态学操作 //closing_rectangle1 (SelectedRegions, RegionClosing, 10, 10) //reduce_domain (ImageReduced, RegionClosing, ImageReduced1) //方式二 //使用fill_up算子填充孔洞 fill_up (SelectedRegions, RegionFillUp) //对填充后的内容进行膨胀 //dilation_rectangle1 (SelectedRegions, RegionDilation, 11, 11) reduce_domain (GrayImage, RegionFillUp, ImageReduced) //条码识别 //创建条码模型 Handle句柄[]元组,类似与C#的数组类型 create_bar_code_model ([], [], BarCodeHandle) //识别条码 find_bar_code (ImageReduced, SymbolRegions, BarCodeHandle, auto, DecodedDataStrings) //释放条码模型 clear_bar_code_model (BarCodeHandle) //显示文字到图像中 //获取窗口句柄 dev_get_window (WindowHandle) //调整字体大小 set_display_font (WindowHandle, 36, mono, true, false) dev_disp_text (DecodedDataStrings, image,0,0, red, [], [])5、模板匹配VP模板匹配的步骤1.框选区域作为模板2.调整训练参数掩膜掩盖现有的模板特征建模建立模板的特征3.训练模板4.查找模板halcon模板匹配的步骤1.createcreate_component_modelcreate_ncc_modelcreate_shape_model 类似vp的模板匹配create_aniso_shape_model 缩放的形状模型create_scaled_shape_model 形变的形状模型2.find3.clearfile_exists (muban.bmp, FileExists) if (FileExists) //如果文件存在就读取模板 read_image (ImagePart, muban.bmp) read_image (Image1, 2.jpg) //halcon模板匹配的分类有哪些 //基于形状、互相关、描述符、可变形 //参数1模板图像2金字塔等级等级越高图像越糊体积越小效率越快精度越低 //3角度的起始值4角度范围5角度的步长 create_shape_model (ImagePart, auto, 0,rad(360), auto, auto, use_polarity, auto, auto, ModelID) find_shape_model (Image1, ModelID, 0,rad(360), 0.5, 1, 0.5, least_squares, 0, 0.9, Row, Column, Angle, Score) else //文件不存在手动创建模板文件 //模板匹配 //读取标准的模板图像 read_image (Image, 1.jpg) //转灰度图 rgb1_to_gray (Image, GrayImage) //框选ROI ROI感兴趣的区域 //1.创建一个框:circle圆、ellipse椭圆、line线、point点、 // polygon多边形、rectangle1普通矩形、rectangle2仿射矩形可旋转 dev_get_window (WindowHandle) stop () draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2) //2.生成区域 gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) //3.裁剪 //方式一保留区域部分其余填充为黑色不适合当模板 reduce_domain (GrayImage, Rectangle, ImageReduced) //方式二保留区域部分其余删除(使用此方法必须首先使用方式一) crop_domain (ImageReduced, ImagePart) //将模板保存为文件 write_image (ImagePart, bmp, 0, muban.bmp) endif