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 := Class
    else
        for Index1 := 1 to |Class|by 1
            Concat := Concat + Class[Index1-1] 
        endfor
    endif
    * 结果写入字典
    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 1
    
  NextKey := AllKeys[Index]
  * 获取数据
  get_dict_param (DictHandle, 'key_data_type', NextKey, NextKeyDataType)
  get_dict_tuple (DictHandle, NextKey, ResultTuple)
  
  * 显示区域
  RowText := ResultTuple[0] - 15
  CloumnText := ResultTuple[1] + 20
  * 显示结果
  result_msg := ResultTuple[2] + ' ' +   ResultTuple[3] $ '.3f'
  disp_message (WindowHandle, result_msg, 'image', RowText, CloumnText, 'blue', 'true')

endfor

结果显示

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

聚鼎贸易:装饰画开店教程新手入门

当艺术遇上商业,每一幕交易皆是文化的交流。本篇将引领有志于开设装饰画店铺的新手们,迈入创业的门槛,以独特的视角和步骤,探索如何成功经营一家装饰画店。 精选货源乃基石。货源的选取不仅反映店主的品味,更直接影响到…

NPDP|产品经理的沟通协调能力:塑造产品成功的核心力量

在快速发展的商业环境中,产品经理的角色愈发重要。他们不仅要负责产品的战略规划、需求管理、项目管理,更要与团队内外各方进行有效的沟通协调。那么,产品经理的沟通协调能力到底有多重要呢?本文将深入探讨这一话题。 沟通是产品成…

使用css做一个旋转的八卦图

使用css做一个旋转的八卦图 1, html部分 <div class"tai"><div class"bai"></div><div class"hei"></div> </div>2, css部分 .tai{width: 200px;height: 200px;border: 1px solid #000;background: linea…

【Python机器学习】模型评估与改进——回归指标

对于回归问题&#xff0c;可以像分类问题一样进行详细评估&#xff0c;例如&#xff0c;对目标值估计过高与目标值估计过低进行对比分析。 但是&#xff0c;对于我们见过的大多数应用来说&#xff0c;使用默认就足够了&#xff0c;它由所有回归器的score方法给出。业务决策有时…

全面详解菲律宾slots游戏本土网盟广告CPI流量效果分析

全面详解菲律宾slots游戏本土网盟广告CPI流量效果分析 一、引言 随着互联网的普及和移动设备的广泛应用&#xff0c;网络游戏行业迅速崛起&#xff0c;成为全球娱乐市场的一大热门。菲律宾作为东南亚地区的重要国家&#xff0c;其网络游戏市场也呈现出蓬勃的发展势头。在这样的…

AI数字人直播源码出售价格公布!

随着数字人行业的兴起&#xff0c;以数字人直播为代表的应用场景逐渐成为人们日常生活中不可分割的一部分&#xff0c;再加上艾媒研究数据显示&#xff0c;超五成以上的被调查群体的企业使用过虚拟人技术&#xff0c;超三成被调查群体的企业计划使用虚拟人技术等结论的公布&…

网友炸锅:这款iPhone壳竟能直接放保时捷车钥匙?

在当今这个个性化消费时代&#xff0c;高端智能手机及其配件已经成为了展示个人身份和品味的重要途径。最近&#xff0c;一款专为保时捷车主量身定制的iPhone手机壳&#xff0c;在互联网上引发了广泛的关注和讨论。 这款手机壳不仅在设计上凸显了保时捷的品牌logo&#xff0c;…

游戏工作室如何巧妙应对IP封禁风险?

游戏工作室在使用IP时&#xff0c;面临着封号的风险&#xff0c;因此需要采取一些防封技巧来保护自己的运营。以下是一些游戏工作室常用的防封技巧。 1. 多IP轮换 游戏工作室可以使用多个代理IP&#xff0c;并定期轮换它们。这样做可以减少单个IP被频繁访问同一游戏服务器而被…

for循环中list触发fast-fail或不触发的原理和方法

Iterable和Iterator Iterator接口位于的位置是java.util.Iterator&#xff0c;它主要有两个抽象方法供子类实现。hasNext()用来判断还有没有数据可供访问&#xff0c;next()用来访问下一个数据。 集合Collection不是直接去实现Iterator接口&#xff0c;而是去实现Iterable接口…

Pycharm设置远程解释器(本地代码+远程服务器环境)

Pycharm设置远程解释器(本地代码+服务器环境) Pycharm设置远程开发环境: 1.点击IDE左上角“文件”-》点击其中的设置 2:点击项目->点击添加解释器 3: 4根据提示填入远程服务器的IP地址,端口,和用户名: 5:连接上后选择现有环境: 6:选择刚才建立好的conda环境…

ubnutu20.04-vscode安装leetcode插件流程

1.在vscode插件商城选择安装leetcode 2.安装node.js 官网下载一个版本安装流程&#xff1a; ①tar -xvf node-v14.18.0-linux-x64.tar.xz ①sudo ln -s /app/software/nodejs/bin/npm /usr/local/bin/ ②ln -s /app/software/nodejs/bin/node /usr/local/bin/ 查看版本&…

G1 垃圾收集器

从 JDK1.9 开始默认 G1&#xff0c;应用在多处理器和大容量内存环境中。 基础概念 Region G1 给整一块Heap内存区域均匀等分了N个 Region&#xff0c;N 默认情况下是 2048。 Region的大小只能是1M、2M、4M、8M、16M或32M (1-32M,并且为2的指数)&#xff0c;比如-Xmx16g -Xms…

【Unity 角色控制器组件】

【Unity 角色控制器组件】 Character Controller&#xff1a; Unity 内置的一个组件&#xff0c;用于提供高级的物理控制&#xff0c;允许开发者控制角色的移动、跳跃和碰撞。 csharp csharp // 假设你已经有了一个带有Character Controller组件的游戏对象// 获取Character Co…

第十四章 路由器 OSPF 动态路由配置

实验目的 掌握 OSPF 协议的配置方法&#xff1a; 掌握查看通过动态路由协议 OSPF 学习产生的路由&#xff1b; 熟悉广域网线缆的链接方式&#xff1b; 实验背景 假设校园网通过一台三层交换机连到校园网出口路由器上&#xff0c; 路由器再和校园外的另一台路由器连接。…

Java高级重点知识点-19-Lambda

文章目录 Lambda表达式函数式编程思想Lambda表达式写法代码讲解 Lambda表达式 函数式编程思想 强调做什么&#xff0c;而不是以什么形式做。 以函数式接口Runnable为例讲解&#xff1a; public class LambdaDemo {public static void main(String[] args) {Runnable runnab…

relation-graph——数据组装+鼠标移入后的详情(自定义插槽的用法)——js技能提升

最近在写后台管理系统的时候&#xff0c;遇到一个需求&#xff0c;就是给我一些节点&#xff0c;让我渲染到页面上&#xff0c;效果图如下&#xff1a; 之前写过一篇文章关于relation-graph关系图组件http://t.csdnimg.cn/7BGYm的用法 还有一篇关于relation-graph——实现右击…

Python 编程快速上手——让繁琐工作自动化(第2版)读书笔记01 Python基础快速过关

Python 编程快速上手——让繁琐工作自动化&#xff08;第2版&#xff09;读书笔记01 Python基础快速过关 1 python基础概念 Python提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。 python运算符顺序 **——%——//——/——*——-——python中常见的数据…

【085】基于SpringBoot实现的网上音乐商城平台

系统介绍 视频演示 点击查看演示视频 基于SpringBoot实现的网上音乐商城平台分为管理员、用户两个角色&#xff0c;系统实现了用户注册和登陆、用户信息管理、用户加购、下单商品、购物车管理、订单管理、音乐分类、音乐商品管理、退出系统等功能 技术选型 开发工具&#…

大数据基础知识【大数据导论】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 大数据基础知识前 必看 【大数据导论】—大数据序言…

旅游管理系统16021

摘 要 本文旨在设计和实现一个基于Spring Boot框架的旅游管理系统。该系统通过利用Spring Boot的快速开发特性和丰富的生态系统&#xff0c;提供了一个高效、可靠和灵活的解决方案。系统将实现旅游景点信息的管理、线路规划、跟团游玩、旅游攻略、酒店信息管理、订单管理和用户…