首页 > 编程语言 >关于字符检测的算法

关于字符检测的算法

时间:2025-01-09 17:33:13浏览次数:3  
标签:字符 模版 hv step 算法 HTuple 检测 FileHandle model

说到字符检测.,我们想到的首先就是提取字符,然后创建模版,利用定位仿射变换到新的字符上,做差值运算,得到的插值区域就是我们的异常区域.

那么具体步骤怎么实现,halcon算子又该如何运用呢?
①图像 的预处理.
a.一般选择自动阈值或绝对阈值.得到感兴趣区域.
自动阈值算法,请查阅之前写的算法:
https://editor.csdn.net/md/?articleId=135462632
b.固定阈值,直接调用threshold.

c.对感兴趣区域筛选,得到需要 的字符区域.
connection
select_shape
d.对字符排序,组合生成图像.
sort_region
dilation_rectangle1
union1
reduce_domain
创建模版之前检测模版参数
inspect_shape_model
我们需要对图像进行处理,亮度等信息记录,检测模版参数等,获取金字塔等级,接下来创建模版.
get_image_pointer1获取图像数据,用于计算灰度或亮度值.
亮度值=每个像素的值/总像素

创建模版,定位字符
create_shape_model
创建变异模型
create_variation_model
训练变异模型
train_variation_model
准备变异模型
prepare_variation_model
到此训练完成,当然如果需要保存模版的,可以通过序列化参数,保存模版到二进制文件中,支持多模版保存.
// Local control variables
HTuple hv_ModelCount, hv_FileHandle, hv_i, hv_ModelIDs;
HTuple hv_SerializedItemHandle, hv_SerializedItemHandle1;
HTuple hv_ModelID;
hv_ModelCount = 3;
OpenFile(“d:/1.dat”, “append_binary”, &hv_FileHandle);
{
HTuple end_val2 = hv_ModelCount-1;
HTuple step_val2 = 1;
for (hv_i=0; hv_i.Continue(end_val2, step_val2); hv_i += step_val2)
{
SerializeShapeModel(hv_ModelIDs, &hv_SerializedItemHandle);
FwriteSerializedItem(hv_FileHandle, hv_SerializedItemHandle);
}
}
CloseFile(hv_FileHandle);

hv_ModelIDs = HTuple();
OpenFile(“d:/1.dat”, “input_binary”, &hv_FileHandle);
{
HTuple end_val13 = hv_ModelCount-1;
HTuple step_val13 = 1;
for (hv_i=0; hv_i.Continue(end_val13, step_val13); hv_i += step_val13)
{
FreadSerializedItem(hv_FileHandle, &hv_SerializedItemHandle1);
DeserializeShapeModel(hv_SerializedItemHandle1, &hv_ModelID);
hv_ModelIDs = hv_ModelIDs.TupleConcat(hv_ModelID);
}
}
CloseFile(hv_FileHandle);

比较变异模型,检测时候用.
compare_variation_model

标签:字符,模版,hv,step,算法,HTuple,检测,FileHandle,model
From: https://blog.csdn.net/u011637657/article/details/145024098

相关文章

  • memtest算法移植到uboot中---------下篇
    //memtest_boot.c#include"memtest_boot.h"//简单的随机数生成器staticulrand_seed=1;staticulsimple_rand(void){  rand_seed=rand_seed*1103515245+12345;  returnrand_seed;}//比较两块内存区域staticintcompare_regions(ulv*bufa,......
  • 遗传算法求解物流配送中心选址模型的MATLAB程序代码
    遗传算法求解物流配送中心选址模型的MATLAB程序代码列表GA/center.mat , 183GA/Consumer.mat , 234GA/costfun.m , 1437GA/dem.mat , 205GA/Distance.m , 171GA/DrawPath.m , 214GA/factory.mat , 183GA/Fitness.m , 69GA/GA.m , 2344GA/InitPop.m ......
  • 【雪花算法的实现原理】
    雪花算法的实现原理一、ID结构二、实现原理三、算法特点四、注意事项雪花算法(Snowflake)是由Twitter开源的一种分布式ID生成算法,其核心思想是将64位的long型ID分为四个部分,分别为:符号位、时间戳、工作机器ID、序列号。雪花算法的实现原理:一、ID结构符号位(1位......
  • 算法练习03
    一、题目给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。示例1:输入:haystack="sadbutsad",needle="sad"。输出:@解释:"sad”在下标0和6处匹配。第一个匹......
  • 递归算法实践--到仓合单助力京东物流提效增收
    作者:京东物流李硕一、背景京东物流到仓业务「对商家」为了减少商家按照京东采购单分货备货过程,对齐行业直接按照流向交接,提升商家满意度;「对京东」揽收操作APP提效;到仓合单功能应运而生;二、问题一次批量采购单(一次50或者100个采购单)需要根据不同的规则合并成多个订单;每一个......
  • 还原大师-遍历残缺字符串匹配md5杂凑值
    题目:我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB????08?????51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32......
  • 2025-01-09:清除数字。用go语言,给定一个字符串 s ,你的任务是执行以下操作,直到字符串中
    2025-01-09:清除数字。用go语言,给定一个字符串s,你的任务是执行以下操作,直到字符串中不再有数字字符:删除第一个出现的数字字符,以及它左侧最近的非数字字符。最终,你需要返回经过操作后剩下的字符串。1<=s.length<=100。s只包含小写英文字母和数字字符。输入保证所......
  • 2025年百科荣创Android -- AI视觉检测模型集成--
    文章目录文章目录前言AndroidOCR文字识别简介PyddleOCR实现方法Android智能交通灯检测简介智能交通灯检测实现方法Android手势识别简介手势识别实现方法Android车牌矫正识别简介车牌矫正与识别方法Android口罩识别简介口罩识别实现方法结语文章目录......
  • 检测相邻递增子数组 II - LeetCode 3350 解题思路与代码解析
    检测相邻递增子数组II-LeetCode3350解题思路与代码解析在本篇博客中,我们将深入解析一道中等难度的算法题——检测相邻递增子数组II。通过这道题,我们将学习如何高效地处理数组中的递增子数组问题,并理解解决该问题的最佳策略。题目描述给定一个由n个整数组成的数组......
  • 根据相关算法对FIRSTVT或LASTVT进行求解(编译原理与技术)
    实验名称FIRSTVT与LASTVT的求解。实验内容根据相关算法对FIRSTVT或LASTVT进行求解。实验目的根据实验内容编写程序,上机调试、得出正确的运行程序,掌握FIRSTVT和LASTVT的求解方法,了解其求解过程。上机环境设计思想(流程)FIRSTVT找FIRSTVT的三条规则:如果要找A的FIRSTVT,A的......