序列号读取

news2024/10/6 16:28:09

1.序列号读取

1.1 应用示例目的与思路

  1. 获取光盘的外接圆;
  2. 然后进行极坐标变换,获取字符所在的区域;
  3. 最后进行字符分割、识别及其在原图上显示。

1.2 应用示例相关算子介绍

(1) mean_image(Image : ImageMean : MaskWidth, MaskHeight : )

功能:对输入图像进行均值滤波(线性平滑)

图形输入参数:Image:输入图像;

图形输出参数:ImageMean:均值滤波后的图像;

控制输入参数:( MaskWidth, MaskHeight):滤波器的大小(宽高)。

(2) dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )

功能:从输入图像中选择像素满足阈值条件的那些区域(使用局部阈值分割图像)。

图像输入参数1:OrigImage:输入图像;

图形输入参数2:ThresholdImage:包含局部阈值的图像阈值图像是原始图像的平滑版本(例如,通过应用mean_image、binomial_filter、gauss_filter等);

图形输出参数:RegionDynThresh:分割后的区域;

控制输入参数1:Offset:应用于ThresholdImage图像的偏移,选择的“偏移”越大,提取的区域就越小;

控制输入参数2:LightDark:提取的模式(明亮、黑暗和相似),List of values: 'dark', 'equal', 'light', 'not_equal'。

(3) fill_up(Region : RegionFillUp : : )

功能:填充区域中的孔洞。

图形输入参数:Region:包含孔洞的输入区域;

图像输出参数:RegionFillUp:无孔洞的输出区域。

(4) gen_contour_region_xld(Regions : Contours : Mode : )

功能:从区域中根据Mode生成相应的xld轮廓。

图形输入参数:Regions:输入的区域;

图形输出参数:Contours:输出的轮廓;

控制输入参数:Mode:生成轮廓的模式,List of values: 'border', 'border_holes', 'center'。'border':边界像素的外部边界用作轮廓点;'border_holes':除了输入区域的外部边界之外,还可以获得所有孔洞的轮廓;'center':边界像素的中心被用作轮廓点。

(5)fit_circle_contour_xld(Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row, Column, Radius, StartPhi, EndPhi, PointOrder)

功能:通过圆近似XLD轮廓(拟合圆)

图形输入参数:Contours:输入的轮廓;

控制输入参数1:Algorithm:用于拟合圆的算法,可选的参数有:

'algebraic' (“代数”方法使轮廓点和生成的圆之间的代数距离最小化);

'ahuber'(类似于“代数”方法,根据Huber的方法对轮廓点进行加权,以减少异常值的影响);

'atukey'(类似于“代数”方法,根据Tukey的方法对轮廓点进行加权,并忽略异常值);

'geometric'(“几何”方法使轮廓点和生成的圆之间的几何距离最小化);

'geohuber'(类似于“几何”方法,根据Huber的方法对轮廓点进行加权,以减少异常值的影响);

'geotukey'(类似于“几何”方法,根据Tukey的方法对轮廓点进行加权,并忽略异常值);

控制输入参数2:MaxNumPoints:用于计算的最大轮廓点数(所有点为-1),Default value: -1;

控制输入参数3:MaxClosureDist:轮廓端点之间的最大距离视为“闭合”,Default value: 0.0;

控制输入参数4:ClippingEndPoints:拟合要忽略的等高线起点和终点的点数,Default value: 0;

控制输入参数5:Iterations:指定算法“algebraic”、“ahuber”和“atukey”的迭代次数,Default value: 3;

控制输入参数6:ClippingFactor:用于消除异常值的剪裁因子(典型值:Huber为1.0,Tukey为2.0),Default value: 2.0;

控制输出参数1:(Row, Column):拟合圆的中心坐标;

控制输出参数2:Radius:拟合圆半径;

控制输出参数3:(StartPhi, EndPhi):拟合圆的起始和终止角度;

控制输出参数4:PointOrder:沿着边界点的顺序。

(6) polar_trans_image_ext(Image : PolarTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )

功能:将图像中的环形弧转换极坐标系下为Width x Height的方形图像。

图形输入参数:Image:输入图像;

图形输出参数:PolarTransImage:输出图像;

控制输入参数1:(Row, Column):输入图像中环形弧中心的行列坐标;

控制输入参数2:(AngleStart, AngleEnd):输入图像中环形弧的起始和终止角度;

控制输入参数3:( RadiusStart, RadiusEnd):输入图像中环形弧的起始和终止半径;

控制输入参数4:(Width, Height):输出图像的宽和高;

控制输入参数5:Interpolation:变换中使用的插值方法。

(7) polar_trans_region_inv(PolarRegion : XYTransRegion : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, WidthIn, HeightIn, Width, Height, Interpolation : )

功能:将极坐标中的区域变换回笛卡尔坐标系下的环形区域。

图形输入参数:PolarRegion:输入区域;

图形输出参数:XYTransRegion:输出区域;

控制输入参数1:(Row, Column):输出区域中环形弧中心的行列坐标;

控制输入参数2:(AngleStart, AngleEnd):输出区域中环形弧的起始和终止角度;

控制输入参数3:( RadiusStart, RadiusEnd):输出区域中环形弧的起始和终止半径;

控制输入参数4:(WidthIn, HeightIn):变换区域XYTransRegion的虚拟输入图像尺寸;

控制输入参数4:(Width, Height):变换区域XYTransRegion的虚拟输出图像尺寸;

控制输入参数5:Interpolation:变换中使用的插值方法。

(8) connection(Region : ConnectedRegions : : )

功能:计算输入区域的连接组件(连通区域)。

图形输入参数:Region:输入区域;

图形输出参数:ConnectedRegions:输出的连通区域;

(9) sort_region(Regions : SortedRegions : SortMode, Order, RowOrCol : )

功能:根据区域的相对位置对区域进行排序。

图形输入参数:Regions:输入区域;

图形输出参数:SortedRegions:排完序的输出区域;

控制输入参数1:SortMode:排序的种类;

控制输入参数2:Order:升序排列或降序排列;

控制输入参数3:RowOrCol:按行或按列进行排序。

(10) read_ocr_class_mlp( : : FileName : OCRHandle)

功能:从文件中读取OCR分类器模型。

控制输入参数:FileName:文件路径+文件名;

控制输出参数:OCRHandl:OCR分类器句柄。

(11) do_ocr_multi_class_mlp(Character, Image : : OCRHandle : Class, Confidence)

功能:使用OCR分类器对多个字符进行分类。

使用OCR分类器对多个字符进行分类。

图形输入参数1:Character:待识别的字符区域;

图形输入参数2:Image:待识别字符的灰度图像;

控制输入参数:OCRHandle:OCR分类器句柄;

控制输出参数1:Class:字符的分类结果;

控制输出参数2:Confidence:字符类别的置信度。

1.3 应用示例示例代码

*读取图片
read_image (CD_Image, './cd_print.png')
*获取图像的宽高
get_image_size (CD_Image, Width, Height)
*均值滤波
mean_image (CD_Image, ImageMean, 51, 51)
*动态阈值分割
dyn_threshold (CD_Image, ImageMean, RegionDynThresh, 15, 'dark')
*填充孔洞
fill_up (RegionDynThresh, RegionFillUp)
*获取区域圆的外轮廓
gen_contour_region_xld (RegionFillUp, ContourBorder, 'border')
*获取拟合圆的圆心和半径
fit_circle_contour_xld (ContourBorder, 'algebraic', -1, 0, 0, 3, 2, CenterRow, CenterColumn, Radius, StartPhi, EndPhi, PointOrder)
*环面的内径与外边界半径之比
AnnulusInner:=0.90
*环面的外径与外边界半径之比
AnnulusOuter:=0.99
*圆周率Pi
Pi := acos(0.0) * 2
*待变换图像的宽度
WithPolar:= 2*Pi*Radius*AnnulusInner
*待变换图像的高度
HeightPolar:= Radius*(AnnulusOuter-AnnulusInner)
RadiusStart:= Radius*AnnulusOuter
RadiusEnd:= Radius*AnnulusInner
AngleStart:= 2*Pi-2*Pi/WithPolar
AngleEnd:= 0
*极坐标变换
polar_trans_image_ext (CD_Image, PolarTransImage, CenterRow, CenterColumn, AngleStart, AngleEnd, RadiusStart, RadiusEnd, WithPolar, HeightPolar, 'bilinear')
*字符宽度与WithPolar之比
CharWidthFraction:=0.01
*字符宽度
CharWidth:=WithPolar*CharWidthFraction
*字符高度
CharHeight:=CharWidth
*均值滤波
mean_image (PolarTransImage, ImageMean1, 2*CharWidth, 2*CharHeight)
*动态阈值分割
dyn_threshold (PolarTransImage, ImageMean1, RegionDynThresh1, 10, 'dark')
*连通区域分析
connection (RegionDynThresh1, ConnectedRegions)
*区域筛选
select_shape (ConnectedRegions, RegionChar, ['height','width','row'], 'and', [CharHeight*0.1,CharWidth*0.3,HeightPolar*0.25], [CharHeight*1.1,CharWidth*1.1,HeightPolar*0.75])
*区域分类
sort_region (RegionChar, RegionCharSort, 'character', 'true', 'row')
read_ocr_class_mlp ('./Industrial_Rej.omc', OCRHandle)
do_ocr_multi_class_mlp (RegionCharSort, PolarTransImage, OCRHandle, Class,Confidence)
SNString:=sum(Class)
polar_trans_region_inv (RegionCharSort, XYTransRegion, CenterRow, CenterColumn, AngleStart, AngleEnd, RadiusStart, RadiusEnd, WithPolar, HeightPolar,Width,Height, 'nearest_neighbor')
dev_close_window ()
dev_open_window (0, 0, Width,Height, 'black', WindowID)
set_display_font (WindowID, 16, 'mono', 'true', 'false')
dev_display (CD_Image)
dev_display (XYTransRegion)
disp_message (WindowID, SNString, 'image', 80, 80, 'green', 'false')

结果展示:

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

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

相关文章

SpringMVC的整合完成CRUD(增删改查)

SpringMVC是一种基于Java的Web框架,它是Spring框架的一部分。SpringMVC通过使用MVC(Model-View-Controller)设计模式来组织和管理Web应用程序的开发。 在SpringMVC中,Model代表数据模型,View代表用户界面,C…

2023年证券投资咨询行业研究报告

第一章 概况 1.1 定义 证券投资咨询业务是指取得监管部门颁发的相关资格的机构及其咨询人员为证券投资者或客户提供证券投资的相关信息、分析、预测或建议,并直接或间接收取服务费用的活动。 根据服务对象的不同,证券投资咨询业务可以分为&#xff1a…

2023年股票大宗减持研究报告

第一章 股票大宗减持概述 1.1 概念 大宗减持是指通过大宗交易的方式进行减持,即达到规定的最低限额的证券单笔买卖申报,买卖双方经过协议达成一致并经交易所确定成交的证券交易,其中A股单笔交易数量在30万股(含)以上…

JetBrains出品的IDE自动补全和提示文档设置

如题下图设置前景色和背景色: 效果如下图,标识1是Completion,标识2是Documentation:

人工智能应用加速落地,推动券商业务+IT双升级|爱分析报告

券商数字化转型已驶入快车道,多部政策文件相继发布,要求提升金融科技治理水平,加大科技资金投入,深化数字化转型。 与此同时,受宏观经济环境下行影响,券商同质化竞争加剧,传统经纪业务增长承压…

怎么把word文档转换成pdf?收藏这几个好方法

怎么把word文档转换成pdf?将Word文档转换为PDF格式是非常有用的,因为它可以确保文档的格式不会因为设备和软件的不同而发生变化,而且可以保护文档不被他人修改或篡改。此外,PDF文档通常比Word文档更小,更适合进行分享和…

Unity中Shader的屏幕抓取 GrabPass

文章目录 前言一、抓取1、抓取指令2、在使用抓取的屏幕前,需要像使用属性一样定义一下,_GrabTexture这个名字是Unity定义好的 前言 Unity中Shader的屏幕抓取 GrabPass 一、抓取 1、抓取指令 屏幕的抓取需要使用一个Pass GrabPass{} GrabPass{“NAME”} 2、在使用…

OpenCV4.8 GPU版本CMake编译详细步骤 与CUDA代码演示

导 读 本文将详细介绍如何使用CMake编译OpenCV4.8 CUDA版本并给出Demo演示,方便大家学习使用。 CMake编译详细步骤 废话不多说,直接进入正题! 【1】我使用的工具版本VS2017 CMake3.18.2 OpenCV4.8.0 CUDA11.2 一般情况下VS版本≥VS2017均…

ICIF2023化工展首亮相,宏工科技解决方案助力制造升级

ICIF China 2023中国国际化工展览会于9月4日-6日在上海新国际博览中心举办。宏工科技携化工物料处理一站式解决方案首次亮相,同化工行业全产业链共叙物料处理自动化未来。 宏工科技是一家提供物料处理自动化设备、系统与服务的国家级高新技术企业,业务覆…

Java多线程4种拒绝策略

文章目录 一、简介二、AbortPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 三、CallerRunsPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 四、DiscardPolicy拒绝策略A. 概述B. 拒绝策略实现原理C. 应用场景D. 使用示例 五、DiscardOldes…

966SEO扫地僧站群·万能HTML模板[V1.9.1]

扫地僧站群万能HTML模板是一款站点管理软件,其主要特点是可以将原始的html模板放入程序中,无需编写任何标签,程序会全自动替换处理,从而快速构建出一个完整的网站,这种模式相对于传统的网站建设方式更加快速、简单,同时可以大幅度降低网站建设的成本和难度.服务器及域名量的配置…

【Linux】进程优先级,环境变量,进程地址空间

文章目录 1.进程优先级基本概念查看系统进程PRI and NIPRI vs NI修改进程优先级的命令其他概念 2. 环境变量基本概念查看环境变量方法常见环境变量测试PATH环境变量相关的命令环境变量的组织方式通过代码如何获取环境变量通过系统调用获取或设置环境变量环境变量通常是具有全局…

1DM+下载器_11.2.1魔改增强版下载

1DM「原:IDM」下载器是一款安卓端的下载工具,多语言解锁版直安装版本,号称是目前 Android 平台最快、最先进的下载管理器应用「支持通过Torrent下载」,而这个版本是改线程的最新idm版本,可用来下载视频、音乐、电影、T…

2023-9-8 求组合数(三)

题目链接&#xff1a;求组合数 IV #include <iostream> #include <algorithm>using namespace std;const int N 5010;int primes[N], cnt; bool st[N]; // 每个质数的次数 int sum[N];void get_primes(int n) {for(int i 2; i < n; i){if(!st[i]) primes[cnt]…

bean的管理-bean的获取

获取bean 默认情况下&#xff0c;在Spring项目启动时&#xff0c;会把bean都创建好&#xff08;但是还会受到作用域及延迟初始化的影响&#xff09;放在IOC容器中&#xff0c;如果想主动获取这些bean&#xff0c;可以通过如下方式 根据name获取bean Object getBean&#xff08…

智能机器人:打造自动化未来的关键技术

文章目录 1. 智能机器人的基本概念2. 智能机器人的关键技术2.1 机器视觉2.2 机器学习与深度学习2.3 传感器技术 3. 智能机器人的应用领域3.1 制造业3.2 医疗保健3.3 农业3.4 服务业 4. 智能机器人的未来趋势4.1 自主决策能力的提升4.2 协作与互操作性4.3 个性化定制4.4 环境感知…

正弦信号的平均功率和峰值电压计算举例

正弦信号的平均功率和峰值电压计算举例 一、问题 假设加载在纯电阻为R1Ω&#xff0c;频率为50Hz和60Hz的正弦信号的平均功率分别为0.5W和2W,请求解这两个信号的峰值电压 U p 1 U_{p1} Up1​和 U p 2 U_{p2} Up2​。 二、解答&#xff1a; 根据欧姆定律可知&#xff1a;对于…

Java虚拟机内存模型和垃圾回收机制

1 Java虚拟机内存模型是怎样的&#xff1f; 2 常见垃圾回收器及其作用内存&#xff1f;

激活函数总结(三十):激活函数补充(Logit、Softsign)

激活函数总结&#xff08;三十&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Logit激活函数2.2 Softsign激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SELU、GELU、Softmax、So…

基于 SpringBoot 的大学生体质测试管理系统,附源码

文章目录 简介效果图系统首页模块管理员功能模块用户功能模块教师功能模块 部分源码源码下载地址 简介 本次设计任务是要设计一个大学生体质测试管理系统&#xff0c;通过这个系统能够满足大学生体质测试管理系统功能。系统的主要功能包括首页、个人中心、用户管理、教师管理、…