news 2026/10/11 1:22:19

halcon7

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
halcon7

检测一维码

read_image (Image, 'C:/Users/renre/Desktop/s8.bmp')
*设置图形对象的绘制模式为仅显示轮廓(边缘),不填充内部区域 填充为fill
dev_set_draw ('margin')
*设置后续绘制的图形颜色设置为绿色
dev_set_color ('green')

* 1 核心算子 创建一个条形码的模版
* 参数1 预留元组 写条形码的参数名字 可选参数名称(如解码类型等),默认空元组表示使用默认配置
* 参数2 预留元组 写条形码的参数值 对应参数值,支持动态调整以适配不同条码类型(如EAN-13、Code 128等) 默认空元组表示使用默认配置
* 参数3 BarCodeHandle 条形码实例对象
create_bar_code_model ([], [], BarCodeHandle)

* 2 核心算子设置模版参数
*通过element_size_min和element_size_max指定条码最小/最大宽度(单位:像素),
*影响候选区域搜索和解码精度,但非严格限制
set_bar_code_param (BarCodeHandle, 'barcode_width_min', 300) // 设置条形码宽度
set_bar_code_param (BarCodeHandle, 'barcode_height_min', 80) // 设置条形码高度

* 3 根据条形码模版找合适区域


*Image:待处理的输入图像
*BarCodeHandle:由 create_bar_code_model 创建的条码模型句柄,可通过 set_bar_code_param 调整解码参数
*'auto':指定条码类型为自动识别模式,支持多种类型但可能降低解码效率,建议明确类型(如 'EAN-13')以提高可靠性
* SymbolRegions:返回检测到的条码区域对象,可用于可视化或进一步分析
* DecodedDataStrings:存储解码后的条码数据字符串
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'auto', DecodedDataStrings)

* 4 获取条形码的具体信息
* all 获取所有已经解码的结果
* 'decoded_types' 指定要搜索结果的类型的可选项 获取条形码的类型 code128类型
get_bar_code_result (BarCodeHandle, 'all', 'decoded_types', BarCodeResults)

get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', BarCodeResults1)

msg:=BarCodeHandle+':'+DecodedDataStrings

检测多张一维码


dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('green')

* 1 创建条形码模型
create_bar_code_model ([], [], BarCodeHandle)
* 2 设置参数
set_bar_code_param (BarCodeHandle, 'barcode_width_min', 280)
set_bar_code_param (BarCodeHandle, 'barcode_height_min', 60)

* 3 加载多张图片
list_files ('C:/Users/renre/Desktop/img', 'files', Files)
*根据正则表达式筛选图片
tuple_regexp_select (Files, '.(jpg|bmp|png)', Selection)

* 4 遍历图片进行查询条形码
for i := 1 to |Selection|-1 by 1
dev_clear_window ()
* 获取图片
read_image (Image, Selection[i])
* 搜索条形码
find_bar_code (Image, SymbolRegions, BarCodeHandle, 'auto', DecodedDataStrings)
tuple_find (DecodedDataStrings, DecodedDataStrings, Indices1)
text:=''
if (Indices1!=0)
text:='未找到一维码'
else
* 获取条形码信息
get_bar_code_result (BarCodeHandle, 'all', 'decoded_types', BarCodeResults)
text:=BarCodeResults+':'+DecodedDataStrings
endif
*显示图片
dev_display (Image)
*显示检测区域
dev_display (SymbolRegions)
stop()
endfor

二维码检测

dev_get_window (WindowHandle)
dev_clear_window ()
*设置图形对象的绘制模式为仅显示轮廓(边缘),不填充内部区域 填充为fill
dev_set_draw ('margin')
*设置后续绘制的图形颜色设置为绿色
dev_set_color ('green')
*1创建Data Matrix ECC 200 或者
*default_parameters 默认参数
*maximum_recognition 最大识别度
create_data_code_2d_model ('Data Matrix ECC 200', ['default_parameters'], ['maximum_recognition'], DataCodeHandle)

*创建QRCode的模版
*create_data_code_2d_model ('QR Code', ['default_parameters'], ['maximum_recognition'], DataCodeHandle1)

*创建PDF417的模版
*create_data_code_2d_model ('PDF417', ['default_parameters'], ['maximum_recognition'], DataCodeHandle2)


*2设置模版参数
*'default_parameters':表示使用默认参数模板。
*'standard_recognition':解码模式为标准识别模式(平衡识别速度和鲁棒性)
set_data_code_2d_param (DataCodeHandle, 'default_parameters', 'standard_recognition')

*3 加载图片

read_image (Image, 'C:/Users/renre/Desktop/ecc200_print_quality_01.png')
*4匹配
*Image:待处理的输入图像(单通道或多通道)。
*DataCodeHandle:数据码模型句柄
*SymbolXLDs:返回检测到的数据码轮廓(XLD 对象)。
*ResultHandles:候选对象的句柄集合,用于后续查询详细属性(如通过 get_data_code_2d_results
*[], [],保留参数,通常用于扩展 默认为空即可
*ResultHandles 结果句柄 DecodedDataStrings 结果字符串
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)
*获取匹配结果
*ResultHandles候选对象的句柄集合
*status'‌结果参数之一,用于获取候选对象的解码状态
*ResultValues‌输出参数,存储返回的结果值
get_data_code_2d_results (DataCodeHandle, ResultHandles, 'status', ResultValues)
dev_display (Image)
dev_display (SymbolXLDs)
*释放模版实例 避免内存泄漏
* clear_data_code_2d_model (DataCodeHandle2)
* clear_data_code_2d_model (DataCodeHandle1)

获取检测区域的中心

*获取图像
read_image (Image, 'fabrik')
*关闭窗口
dev_close_window ()
*打开窗口
dev_open_window (0, 0, 512, 512, 'black', WindowID)
*设置输出字体,14号字,Courier字体,粗体
set_display_font (WindowID, 14, 'mono', 'true', 'false')
*设置输出颜色
dev_set_colored (6)
*进行区域生长操作
*区域生长(Region Growing)图像分割算子,其功能是通过像素相似性将图像分割成连通区域
* mage‌:输入的单通道灰度图像,作为分割处理的源数据
*Regions‌:输出参数,存储分割后生成的区域集合
*‌Row=1, Column=1‌:定义邻域模板尺寸(奇数),表示检测像素的相邻范围为1×1,即直接比较4-邻域或8-邻域像素
*‌Tolerance=3‌:灰度差异阈值,当相邻像素灰度值差的绝对值≤3时合并为同一区域
*‌MinSize=200‌:输出区域的最小像素数,过滤掉面积小于200的候选区域
regiongrowing (Image, Regions, 1, 1, 3, 200)
*显示区域
dev_display (Regions)
*计算所有不相连区域的面积和中心点坐标
area_center (Regions, Area, Row, Column)
center:=|Area|
*指定窗口句柄和字符串内容,返回文本的布局参数
* WindowID:目标窗口的句柄,用于确定测量环境6。
*12345:待测量的字符串内容(示例中为数字字符串)6。
*Ascent:输出参数,表示字符基线到顶部的距离(上行高度)6。
*Descent:输出参数,表示字符基线到底部的距离(下行高度)6。
*TxtWidth:输出参数,返回字符串的总宽度(像素单位)6。
*TxtHeight:输出参数,返回字符串的总高度(像素单位)
get_string_extents (WindowID, 12345, Ascent, Descent, TxtWidth, TxtHeight)
*将面积计算结果以字符串形式显示在窗口中
for I := 0 to center-1 by 1
*WindowID:目标窗口句柄,指定文本渲染的图形窗口
*Area[I]:动态字符串数组,支持多行文本显示(数组元素自动换行)
*'image':坐标系模式,表示后续坐标参数基于图像像素而非窗口坐标系,适用于缩放图像场景。
*Row[I] - TxtHeight / 2:垂直居中定位,通过基准行坐标减去文本高度一半实现。
*Column[I] - TxtWidth / 2:水平居中定位,原理同垂直定位。
*'white':文本颜色参数,支持颜色名称或RGB值。
*'false':禁用橙色背景框(若需自定义框色可传入颜色字符串如'#FF00CC')
disp_message (WindowID, Area[I], 'image', Row[I] - TxtHeight / 2, Column[I] - TxtWidth / 2, 'white', 'red')
endfor

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 1:19:45

VirtualBox+Vagrant快速搭建虚拟机【最新详细教程】

VirtualBoxVagrant快速搭建虚拟机📖1.安装VirtualBox✅下载VirtualBox✅安装📖2.安装Vagrant✅下载Vagrant✅安装📖3.搭建Centos7系✅1.初始化Vagrantfile并启动✅2.配置网络ip地址✅3.配置账号密码登录✅4.配置网卡✅5.配置yum国内加速&…

作者头像 李华
网站建设 2026/10/11 1:19:02

Java中的类和对象(上)

1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思…

作者头像 李华
网站建设 2026/10/11 1:19:00

CMS61850客户端

近一年都比较忙,很久没有更新文档了。这次抽了点时间,把CMS61850的客户端再补上。方便大家进一步的学习。当然61850相关的文档已经写的快吐了。不出意外,这应该是最后一篇关于61850的文章了。 本次提供的demo,可直接在windows上运…

作者头像 李华
网站建设 2026/10/11 1:17:07

ubuntu打开Samba服务

打开Samba服务安装Samba sudo apt-get install samba查看Samba是否安装成功, 输入samba: $ samba [2021/02/23 16:30:17.065666, 0] ../lib/util/debug.c:947(reopen_logs_internal) Unable to open new log file /var/log/samba/log.%m: Permission denied [2021/02/23 16:30…

作者头像 李华
网站建设 2026/10/11 1:17:06

STM32CubeMx + makefile --- 添加串口打印 printf

STM32CubeMx makefile — 添加串口打印printf 源码仓库: 码云仓库 环境 工具版本说明开发板小熊派IoT开发板建议相同ubuntu16.04版本关系不大STM32CubeMXV6.3.0建议相同L4软件包STM32Cube FW_L4 V1.16.0建议相同STM32CubeProgrammerv2.8.0版本关系不大交叉编译工具链gcc-arm-…

作者头像 李华
网站建设 2026/10/11 1:16:50

STM32CubeMx开发之路—11使用FSMC操作LCD

STM32CubeMx开发之路—11使用FSMC操作LCD 运行环境 Windows10STM32CubeMX Version 5.2.0Keil5(MDK5) Version 5.28.0.0 简介 本例程主要讲解如何使用FSMC操作LCD STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目 CubeMX配置 调试打印配…

作者头像 李华