当前位置: 首页 > news >正文

Halcon 简单的ORC 字体识别

文章目录

  • 仿射变化
  • 识别

仿射变化

在这里插入图片描述

将图片进行矫正处理

dev_close_window()
read_image(Image,'C:/Users/Augustine/Desktop/halcon/image.png')
*获取图片的大小
get_image_size(Image, Width, Height)
*仿射运算获取图片的角度对图片进行矫正
*选中图片的区域
gen_rectangle1 (Rectangle, 155.399, 242.882, 387.318, 763.585)
*获取文本图片的旋转角度,得到的计算的文本行旋转角度
text_line_orientation(Rectangle,Image,75,-0.4,0.523599, OrientationAngle)
*从点和角度计算刚性仿射变换
* Row1 (输入参数) ——原始点的行坐标
* Column1 (输入参数) ——原始点的列坐标
* Angle1 (输入参数) ——原始点的角度
* Row2 (输入参数) ——转换点的行坐标
* Column2 (输入参数) ——转换点的列坐标
* Angle2 (输入参数) ——转换点的角度
* HomMat2D (输出参数) ——输出转换矩阵
vector_angle_to_rigid(Height/2, Width/2, OrientationAngle, Height/2,  Width/2,0, HomMat2D)
*仿射变化作用到图片上
affine_trans_image(Image, ImageAffinTrans, HomMat2D, 'constant', 'false')

在这里插入图片描述# 分割

*分割
*提取图像的点
dots_image(ImageAffinTrans, DotImage, 5, 'dark', 0)
*由于halcon中包含对点状的图像进行直接读取的功能。所以掉用点状读取算子。DotImage为输出的图像变量存放位置。5为点状的最大直径。
*如果不想选取过大的点,可以调小,可以使用默认直径。‘dark’,最重要的变量。你提取的点状区域是提取暗色还是亮色(light)还是所有(all)。
*裁剪区域
reduce_domain(DotImage, Rectangle, ImageReduced)*二值化,前景和背景很接近的时候用快速二值化(黑白分明)
binary_threshold(ImageReduced, Region, 'max_separability', 'light', UsedThreshold)
*膨胀
dilation_rectangle1(Region, RegionDilation, 10, 10)
*形成单独的连同区域
connection(RegionDilation, ConnectedRegions)
*变换区域的形状
shape_trans(ConnectedRegions,RegionTrans,'rectangle1')
*形状选择,通过宽和高筛选掉冒号
select_shape (RegionTrans, SelectedRegions, ['width','height'], 'and', [25.27,66.039], [125.63,74.642])
*将区域划分为大小大致相等的矩形。
partition_rectangle(SelectedRegions, Partitioned, 43, 80)
*和二值化的区域求交集,找到字符
intersection(Partitioned, Region, RegionIntersection)

识别

*排序
sort_region(RegionIntersection, SortedRegions, 'character', 'true', 'row')
*读取匹配模板
read_ocr_class_mlp('DotPrint_0-9A-Z_NoRej.omc', OCRHandle)
*匹配
* 只能识别暗点所以要将图片亮暗反转
invert_image(ImageReduced, ImageInvert)
do_ocr_multi_class_mlp(SortedRegions, ImageInvert, OCRHandle, Class, Confidence)*显示
*求连通域个数
count_obj(SortedRegions,num)
*求最小外接矩形
smallest_rectangle1(SortedRegions, Row1, Column1, Row2, Column2)
set_display_font (WindowHandle, 50, 'mono', 'true', 'false')
dev_clear_window ()
dev_display (Image)
dev_set_color ('red')
for i:=0 to 17 by 1set_tposition (WindowHandle,30, 120+40*i)write_string (WindowHandle, Class[i])
endfor

在这里插入图片描述

http://www.lryc.cn/news/255384.html

相关文章:

  • 12月7日作业
  • 【腾讯云HAI域探密】- AIGC应用助力企业降本增效之路
  • 云原生之深入解析如何限制Kubernetes集群中文件描述符与线程数量
  • Django的Auth模块
  • 敏捷开发方法
  • vue 前端实现login页登陆 验证码
  • python 涉及opencv mediapipe知识,眨眼计数 供初学者参考
  • HTTP 和 HTTPS的区别
  • 从零开始训练一个ChatGPT大模型(低资源,1B3)
  • 从文字到使用,一文读懂Kafka服务使用
  • 什么是https加密协议?
  • 0012Java程序设计-ssm医院预约挂号及排队叫号系统
  • PaddleClas学习3——使用PPLCNet模型对车辆朝向进行识别(c++)
  • 学习记录---kubernetes中备份和恢复etcd
  • 使用单例模式+观察者模式实现参数配置实时更新
  • 区块链实验室(28) - 拜占庭节点劫持区块链仿真
  • 聊聊AsyncHttpClient的ChannelPool
  • [MySQL] MySQL复合查询(多表查询、子查询)
  • [架构之路-256]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 软件系统不同层次的复用与软件系统向越来越复杂的方向聚合
  • C++初学教程三
  • 雷达点云数据.pcd格式转.bin格式
  • Fiddler抓包测试
  • 视频处理关键知识
  • LeetCode435. Non-overlapping Intervals
  • ffmpeg 实现多视频轨录制到同一个文件
  • vue3中子组件调用父组件的方法
  • 使用OkHttp上传本地图片及参数
  • 无公网IP环境如何SSH远程连接Deepin操作系统
  • 不会代码(零基础)学语音开发(语音控制板载双继电器)
  • 在imx6ull中加入ov5640模块