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

【图像识别】基于模板匹配算法实现英文印刷字符识别matlab代码

1 简介

2 部分代码

function MainForm global bw; global bl; global bll; global s; global fontSize; global charpic; global hMainFig; global pic; global hText; clc; close all; warning off all; if ~exist(fullfile(pwd, 'pic'), 'dir') mkdir(fullfile(pwd, 'pic')); end picname = fullfile(pwd, 'image.jpg'); pic = imread(picname); s = size(pic); if length(s) == 3 pic = rgb2gray(pic); end bw = im2bw(pic, 0.7); bw = ~bw; for i = 1 : s(1) if sum(bw(i,:) ~=0) > 0 FontSize_s = i; break; end end for i = FontSize_s : s(1) if sum(bw(i,:) ~=0) == 0 FontSize_e = i; break; end end FontSizeT = FontSize_e - FontSize_s; fontName = '宋体'; fontSize = FontSizeT; bw1 = imclose(bw, strel('line', 4, 90)); bw2 = bwareaopen(bw1, 20); bwi2 = bwselect(bw2, 368, 483, 4); bw2(bwi2) = 0; bw3 = bw .* bw2; bw4 = imclose(bw3, strel('square', 4)); [Lbw4, numbw4] = bwlabel(bw4); stats = regionprops(Lbw4); for i = 1 : numbw4 tempBound = stats(i).BoundingBox; tempPic = imcrop(pic, tempBound); tempStr = fullfile(pwd, sprintf('pic\\%03d.jpg', i)); imwrite(tempPic, tempStr); end [bl, num] = bwlabel(bw1, 4); chars = [char(uint8('A'):uint8('Z')), uint8('a'):uint8('z'), uint8('0'):uint8('9')]; eleLen = length(chars); charpic = cell(1,eleLen); hf1 = figure('Visible', 'Off'); imshow(zeros(32,32)); h = text(15, 15, 'a', 'Color', 'w', 'Fontname', fontName, 'FontSize', fontSize); for p = 1 : eleLen set(h, 'String', chars(p)); fh = getframe(hf1, [85, 58, 30, 30]); temp = fh.cdata; temp = im2bw(temp, 0.2); [r, c] = find(temp == 0); rect = [min(c) min(r) max(c)-min(c) max(r)-min(r)]; temp = imcrop(temp, rect); [f1, f2] = find(temp == 1); sz = size(temp); temp = temp(max(1, min(f1)-1):min(max(f1)+1, sz(1)),max(1, min(f2)-1):min(max(f2)+1, sz(2))); charpic{p} = temp; end delete(hf1); bll = zeros(size(bl)); for i = 1:num [f1, f2] = find(bl == i); bll(min(f1):max(f1), min(f2):max(f2)) = i; end hMainFig = figure(1); imshow(picname, 'Border', 'loose'); hold on; for i = 1 : numbw4 tempBound = stats(i).BoundingBox; rectangle('Position', tempBound, 'EdgeColor', 'r'); end hText = axes('Units', 'Normalized', 'Position', [0 0 0.1 0.1]); axis off; set(hMainFig, 'WindowButtonMotionFcn', @ShowPointData); end function ShowPointData(hObject, eventdata, handles) global bw; global bl; global bll; global s; global charpic; global hMainFig; global pic; global hText; p = get(gca,'currentpoint'); x = p(3); y = p(1); if x<1 || x>s(1) || y<1 || y>s(2) return; end curlabel = bll(uint32(x), uint32(y)); if curlabel ~= 0 [f1, f2] = find(bl == curlabel); minx = min(f1); maxx = max(f1); miny = min(f2); maxy = max(f2); tempic = pic(minx:maxx, miny:maxy); temp = bw(minx:maxx, miny:maxy); tempIm = zeros(round(size(temp)*2)); tempIm = logical(tempIm); tempIm(round((size(tempIm, 1)-size(temp, 1))/2):round((size(tempIm, 1)-size(temp, 1))/2)+size(temp, 1)-1, ... round((size(tempIm, 2)-size(temp, 2))/2):round((size(tempIm, 2)-size(temp, 2))/2)+size(temp, 2)-1) = temp; set(0, 'CurrentFigure', hMainFig); imshow(tempIm, [], 'Parent', hText); mincost = 100000; mark = 1; for i = 1 : length(charpic) temp1 = charpic{i}; ss = size(temp); temp1 = imresize(temp1, ss); % tempcost = sum(sum(abs(temp - temp1))); tempcost = norm(temp - temp1); if tempcost < mincost mincost = tempcost; mark = i; end end end end

3 仿真结果

4 参考文献

[1]赖特. "基于模板匹配及人工神经网络算法的图像识别应用——MATLAB实现机动车牌号码辨识." 智能建筑与智慧城市 11(2017):5.

部分理论引用网络文献,若有侵权联系博主删除。

http://www.jsqmd.com/news/1316519/

相关文章:

  • 如何快速获取苹果平方字体:PingFangSC完整使用指南
  • 如何快速解决BG3ModManager模组冲突导致的角色模型异常问题
  • RPC-Bench:用审稿标尺衡量大模型论文理解能力
  • 苹果平方字体完全指南:免费获取专业中文排版的终极方案
  • DynaMix单元测试策略:如何确保动态多态代码的可靠性与稳定性
  • 写实渲染一致性崩溃预警:跨帧UV漂移率>0.87时的实时修复协议(工业级管线已验证,2023年奥斯卡提名项目同源)
  • PyTorch张量转换:detach、cpu、numpy、item方法详解与实战避坑
  • 百度网盘不限速原理解析:如何合法合规提升你的网盘下载速度
  • 【国家级AI搜索合规暗礁】:GDPR/中国《生成式AI服务管理暂行办法》/巴西LGPD下地域策略重构指南(附6套可落地Prompt模板)
  • 数据中台前十名——2026年企业级数据中台建设方案对比
  • 一人公司生存指南:从全能战士到数字分身,揭秘创业者的三条演进路径
  • 2026年嘉兴合同纠纷律师推荐 张锦律师财经跨界实战经验丰富 - 本地品牌推荐
  • gh_mirrors/ex/exporters性能基准测试:15种模型转换速度与精度分析
  • 终极指南:OpenCore Legacy Patcher完整教程,让老款Mac焕发新生
  • 2026年托运电动车收费价格表:寄电动车多少钱?怎么寄划算又省心? - 快递物流资讯
  • FreeRTOS延时函数原理与应用:从vTaskDelay到vTaskDelayUntil的深度解析
  • 5个实用技巧让Pot成为你的跨平台翻译助手
  • 2026年7月戴尔杭州临安售后设备高频故障权威答疑|全国用户维修指南 - 让我去的
  • android-yolo模型部署全解析:assets目录与JNI接口配置指南
  • 从提示词工程到代码即文档:构建可复用的AI工作流
  • Hybrid Core框架全面解析:现代WordPress主题与插件开发的终极指南
  • 2026年Solstice索致泰代理商:谁能成为你的最佳合作伙伴? - 品牌排行榜
  • JetBrains 已死,下一个洛基亚 Borland
  • 大语言模型驱动搜索与推荐融合:统一信息获取架构的演进与实践
  • 2026 年 8 月湖州工业 GEO 优化公司综合测评|精密制造线上询盘拓客榜单 - 品牌测评网
  • AI对话体验升级:从机械应答到拟人化交互的技术跃迁
  • 2026深圳本硕留学移民一体化规划指南:5大雷区规避与机构选择 - 互联网科技品牌测评
  • RPC-Bench:大模型论文理解能力的深度评测基准与学术审稿场景应用
  • 微信聊天记录如何真正属于你?WeChatMsg让数据回归主人
  • Python PDF处理终极指南:pypdf库从入门到精通