HALCON 学习笔记1

1、筛选指定灰度的区域

筛选出每组第一条柱子

2、

cpp 复制代码
* 提取目标区域
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条

cpp 复制代码
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、简单二维码识别

cpp 复制代码
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 填充孔洞

cpp 复制代码
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.create

create_component_model

create_ncc_model

create_shape_model 类似vp的模板匹配

create_aniso_shape_model 缩放的形状模型

create_scaled_shape_model 形变的形状模型

2.find

3.clear

cpp 复制代码
file_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
相关推荐
dadaobusi1 小时前
学习: PCIe 6.0 的 L0p
学习
燕落南枝3 小时前
CSS 学习:类型选择器与 AI 注释实战
css·人工智能·学习
罗湖老棍子3 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
努力实干4 小时前
面向对象设计原则——C++
开发语言·c++·数码相机
指针向南5 小时前
PDF转长图用什么?3种方法实测(2026)
图像处理·人工智能·计算机视觉·pdf
stsdddd5 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
vibecoding776 小时前
FLUX 3 Image Klein 实战:int8 量化 8GB 显卡跑商用文生图,ComfyUI 完整部署流程
人工智能·计算机视觉·大模型
CV爱数码6 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n6 小时前
【算法】约瑟夫环问题
java·算法
李航19836 小时前
DeepSeekAI建模三 - 实战建模一组柜子
人工智能·python·计算机视觉·ai·ai编程