Halcon OCR字符识别(极坐标转换,字符识别)

Halcon OCR字符识别(极坐标转换,字符识别)

请添加图片描述

代码

* 1.加载图片 ***************************************************
dev_close_window ()
read_image (Image, './img')
get_image_size (Image, Width, Height)
dev_get_window (WindowHandle)
dev_set_colored (12)
dev_set_draw ('margin')
dev_display (Image)* 2.获取字符区域 ***************************************************
rgb1_to_gray (Image, GrayImage)
get_image_size (GrayImage, Width, Height)
threshold (GrayImage, Region, 40, 140)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 13000, 99999)
fill_up (SelectedRegions, RegionFillUp)
opening_circle (RegionFillUp, RegionOpening, 5.5)* 3.字符环形区域 ***************************************************
gen_contour_region_xld (RegionOpening, Contours, 'border')
segment_contours_xld (Contours, ContoursSplit, 'lines_circles', 5, 4, 2)
length_xld (ContoursSplit, Lengths)
LengthIndex := sort_index(Lengths)[|Lengths| - 1]
select_obj(ContoursSplit, ObjectSelected, LengthIndex + 1)fit_circle_contour_xld (ObjectSelected, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
gen_circle (Circle, Row, Column, Radius)dilation_circle (Circle, RegionDilation, 5.0)
erosion_circle (Circle, RegionErosion, 30)difference (RegionDilation, RegionErosion, RegionDifference)
reduce_domain (GrayImage, RegionDifference, ImageReduced)
stop()* 4.极坐标转换与旋转 ***************************************************
polar_trans_image_ext (ImageReduced, PolarTransImage, Row, Column, \rad(85), rad(280), Radius-100, Radius, \750, 250, 'nearest_neighbor')
rotate_image (PolarTransImage, ImageRotate, 90, 'constant')* 5.获取文本区域 ***************************************************
threshold (ImageRotate, RegionText, 160, 255)
threshold (ImageRotate, RegionBack, 35, 80)
fill_up (RegionBack, RegionBack)
connection (RegionBack, ConnectedRegions1)
select_shape_std (ConnectedRegions1, SelectedBack, 'max_area', 70)intersection (RegionText, SelectedBack, RegionIntersection)
connection (RegionIntersection, ConnectedRegions2)
select_shape (ConnectedRegions2, SelectedTexts, 'area', 'and', 10, 99999)* 6. 获取文本外接矩形***************************************************
opening_circle (SelectedTexts, SelectedTexts, 1.5)
union1 (SelectedTexts, RegionUnion)closing_rectangle1 (RegionUnion, RegionClosing, 80, 3)
fill_up (RegionClosing, RegionFillUp1)
connection (RegionFillUp1, ConnectedRegions3)
shape_trans (ConnectedRegions3, RegionTrans, 'rectangle1')
dilation_rectangle1 (RegionTrans, RegionDilation1, 15, 5)
sort_region (RegionDilation1, SortedRegions, 'first_point', 'true', 'row')invert_image (ImageRotate, ImageInvert)* 7.循环识别字符 ***************************************************
* 读取OCR
read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)* 存放结果字典
create_dict (DictHandle)count_obj (SortedRegions, Number)
for Index := 1 to Number by 1* 获取区域内文本select_obj (SortedRegions, SubRect, Index)intersection (SubRect, SelectedTexts, SubRegion)connection (SubRegion, ConnectedRegions4)sort_region (ConnectedRegions4, SortedRegions1, 'first_point', 'true', 'column')* 字符识别do_ocr_multi_class_mlp (SortedRegions1, ImageInvert, OCRHandle, Class, Confidence)area_center (SubRect, Area, RowRect, ColumnRect)tuple_mean (Confidence, MeanConfidence)* 拼接结果Concat := ''if(|Class| == 1)Concat := Classelsefor Index1 := 1 to |Class|by 1Concat := Concat + Class[Index1-1] endforendif* 结果写入字典set_dict_tuple (DictHandle, Index, [RowRect, ColumnRect, Concat, MeanConfidence])endfor* 8.显示结果 ***************************************************
dev_clear_window ()
dev_display (ImageRotate)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
* 循环解析字典
get_dict_param (DictHandle, 'keys', [], AllKeys)
for Index := 0 to |AllKeys| - 1 by 1NextKey := AllKeys[Index]* 获取数据get_dict_param (DictHandle, 'key_data_type', NextKey, NextKeyDataType)get_dict_tuple (DictHandle, NextKey, ResultTuple)* 显示区域RowText := ResultTuple[0] - 15CloumnText := ResultTuple[1] + 20* 显示结果result_msg := ResultTuple[2] + ' ' +   ResultTuple[3] $ '.3f'disp_message (WindowHandle, result_msg, 'image', RowText, CloumnText, 'blue', 'true')endfor

结果显示

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/39987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue移动端地图App:van-uploader导致的卡顿问题

问题描述 基于Vue3+Vant IU 4开发的移动端地图App,在进行地图点位上报、上报记录查看过程中,出现App卡顿、甚至闪退的问题,进行问题定位之后,发现是van-uploader组件导致的问题。 van-uploader文件上传组件 van-uploader组件用于将本地的图片或文件上传至服务器,并在上传…

智慧课堂基于YOLOv8的学生上课行为检测

数据集 学生上课行为检测,我们直接使用公开数据集 共三类行为:举手、读书、写字 数据集已经按照YOLO格式配置好,数据内容如下 模型训练 ​ 采用YOLOv8模型进行训练,官方代码 首先是划分数据集,分为训练集、验证&a…

QT创建地理信息shp文件编辑器shp_editor

空闲之余创建一个简单的矢量shp文件编辑器,加深对shp文件的理解。 一、启动程序 二、打开shp文件 三、显示shp文件的几何图形 四、双击右边表格中的feature,主窗体显示选中feature的各个节点。 五、鼠标在主窗体中选中feature的节点,按鼠标左…

程序员AI提效案例:统计B站课程耗时情况

文章目录 一,时长统计需求二,一波三折三,终极方案 AIJava总结 今天为了写一篇博客,这篇博客介绍了B站的一个Java项目,这个项目分为三个阶段: 初级篇高级篇运维篇 一,时长统计需求 我想根据每个…

从零开始学量化~Ptrade使用教程(二)——主界面及基本功能

主界面 主界面如下图所示,包含标题栏、行情模块、交易模块以及查询模块底部的状态栏。其中交易模块和行情模块之间可拖动,以此来调整交易模块和行情模块大小。 多账号管理 多账号管理功能,实现证券、信用、期权多账号管理,用于支…

鸿蒙数据防泄漏(DLP)【Data Loss Prevention Kit开发指导】

Data Loss Prevention Kit开发指导 DLP是系统提供的系统级的数据防泄漏解决方案,提供一种称为DLP的文件格式。后缀格式为“原始文件名(包含原始文件后缀).dlp”,例如: “test.docx.dlp”,文件由授权凭证和原始文件密文…

如何在主动动态安全中使用人工智能驱动的威胁分类提高防御精准度

面对当今世界不断演变的网络威胁,人工智能和网络安全将会发挥重要的防护作用。在数据泄露和网络攻击日益突出的时代,人工智能和网络安全之间的合作成为数字安全战场上的强大盟友。 本文将深入研究这两个领域的融合,揭示它们在彻底改变威胁检测…

C - Tile Distance 2

分析&#xff1a;每穿过一行就会加一 先纵向走&#xff0c;再横向走 统一用砖头的左半部分计算 #include<bits/stdc.h> using namespace std; typedef long long ll; int main(){ ll sx,sy,tx,ty;cin>>sx>>sy>>tx>>ty; if((sxsy)%2!0)…

远程登录WINDOWS10,提示你的凭据不工作

1&#xff1a;想通过远程桌面登录WINDOWS10输入用户名和密码后&#xff0c;出现下面的提示。 2&#xff1a;登录WINDOWS10&#xff0c;在运行中输入gpedit.msc 3&#xff1a;本地组策略编辑器窗口中&#xff0c;依次展开&#xff0c;计算机配置 ---> 管理模版---> 系统--…

生成式人工智能与虚拟资产成为BGOV 2024的焦点议题

香港&#xff0c;2024年7月2日 — 一年一度的创新科技盛事BUSINESS GOVirtual (BGOV) 科技博览及会议将于2024年7月11日至12日在香港会议展览中心隆重举行。 展览及会议焦点两大科技趋势&#xff1a;生成式人工智能 (Generative AI) 和虚拟资产 生成式人工智能( Generative A…

鸿蒙数据防泄漏(DLP)【Data Loss Prevention Kit简介】

Data Loss Prevention Kit简介 Data Loss Prevention Kit&#xff08;数据防泄漏服务&#xff0c;简称为DLP&#xff09;&#xff0c;是系统提供的系统级的数据防泄漏解决方案&#xff0c;提供文件权限管理、加密存储、授权访问等能力&#xff0c;数据所有者可以基于帐号认证对…

Android线性布局的概念与属性

线性布局(LinearLayout)是Android中最简单的布局方式&#xff0c;线性布局方式会使得所有在其内部的控件或子布局按一条水平或垂直的线排列。如图所示&#xff0c;图a是纵向线性布局示意图&#xff0c;图b是横向线性布局示意图。 a&#xff09;纵向线性布局示意图 …

【计算机视觉系列实战教程 (十四)】:图像金字塔(高斯金字塔、拉普拉斯金字塔)

1.图像金字塔 (1)下采样 从G0 -> G1、G2、G3 step01&#xff1a;对图像Gi进行高斯核卷积操作&#xff08;高斯滤波&#xff09;step02&#xff1a;删除所有的偶数行和列 void cv::pyrDown(cv::Mat &imSrc, //输入图像cv::Mat &imDst, //下采样后的输出图像cv::Si…

在SpringBoot 3.0环境下创建一个SpringBoot 项目

一、环境配置 1.专业版的IDEA 版本号&#xff1a;尽量选择不要太老&#xff0c;不要太早 这里以2023.3.1为例。 官网&#xff1a;Download IntelliJ IDEA – The Leading Java and Kotlin IDE (jetbrains.com) 破解版&#xff1a;网上找资料哦&#xff01;&#xff01;&#…

《人生苦短,我用python·七》各种报错问题解决及C++调用python的接口

1、VS的debug版本正常可以调用python的release版本&#xff08;python安装完只有release版本的dll和lib&#xff09;&#xff0c;在项目——附加依赖项中加入python39.lib然后编译debug版本报错&#xff0c;无法打开python39_d.lib&#xff0c;我在项目属性配置的是调用release…

程序员学长 | 当 LSTM 遇上 Attention

本文来源公众号“程序员学长”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;当 LSTM 遇上 Attention 今天我们一起来聊一下深度学习中的注意力&#xff08;Attention&#xff09;机制 注意力机制是深度学习中引入的一种技术&am…

「前端」快速排序算法演示

快速排序算法演示。 布局描述 一个简单的HTML页面,用户可以在其中输入一系列用逗号分隔的数字。 一个CSS样式表,提供了一个美观大方的布局和样式。 一个JavaScript脚本,实现了快速排序算法,并在用户点击按钮时对输入的数字进行排序,并显示结果。 效果演示 核心代码 <…

Mysql-基础-DDL操作

1、数据库操作 查询 查询所有数据库 show databases; 创建 创建数据库 create database [if not exists] 数据库名 使用及查询 use 数据库名 select database() 查询当前所处数据库 删除 drop database [if not exists] 数据库名 2、表操作 查询当前库中的所…

【ArcGIS Pro 加载项】修复图层名为要素类别名

ArcPro从目录添加要素类至内容列表&#xff0c;图层名称默认为要素类别名。 但是一番操作之后&#xff0c;这个图层名称可能会被你改了&#xff0c;想复原的话就要手动去图层属性里面复制要素类名称或者别名来重命名了&#xff0c;多少有点不方便。 所以小编通过SDK制作了这个…

python3.8安装详细教程

python3.8下载及安装详细教程 Python 3.8 是一个重要的Python版本&#xff0c;它引入了一系列新功能和改进。以下是对Python 3.8的详细概述&#xff0c;包括其关键特性、安装方法以及版本状态等信息。 Python 3.8的关键特性 海象运算符&#xff08;Walrus Operator&#xff09…