当前位置: 代码迷 >> 综合 >> 【图像识别】基于卷积神经网络cnn实现银行卡数字识别matlab源码
  详细解决方案

【图像识别】基于卷积神经网络cnn实现银行卡数字识别matlab源码

热度:8   发布时间:2023-12-03 20:30:52.0

1 基于卷积神经网络cnn实现银行卡数字识别模型

模型参考这里。

2 部分代码

%印刷体识别
clc;clear;close all;
addpath('util/');
addpath('data/');
inputpath='data/';
fdir=dir(strcat(inputpath,'*.jpg'));
p=size(fdir);
method=2;%定位方法
levelth=0.3;%水平分割缩放阈值
for i=2:p(1)
im=imread(fdir(i).name);
imtp=imresize(im,0.25);
%图像灰度化
if(length(size(im))>1)im=double(rgb2gray(im));
elseim=double(im);
endim=imresize(im,0.25);th=graythresh(im);pt=size(im);%提取上下位面  if(method==1)im=GuassSmoothfilter(im)*255;%平滑cent=2;[Labels,BW]=KmeansSg(im,cent);%kmeans聚类[pMax,pMin]=Findline(BW);%Hough变换downlevel=pMax.y-(pMax.y-pMin.y)*0.30;uplevel=pMin.y+(pMax.y-pMin.y)*0.55;else[pMax,pMin,pxMax,pxMin]=levelSg(im,levelth);%水平集分割downlevel=pMax-(pMax-pMin)*0.29;uplevel=pMin+(pMax-pMin)*0.55;endimcrop=im(uplevel:downlevel,:);%定位银行卡号po=size(imcrop);imtpcrop=zeros(po(1),po(2),3);imtpcrop(1:po(1),:,1)=imtp(uplevel:downlevel,:,1);imtpcrop(1:po(1),:,2)=imtp(uplevel:downlevel,:,2);imtpcrop(1:po(1),:,3)=imtp(uplevel:downlevel,:,3);figure;imshow(imcrop,[]);title('灰度切割')figure;imshow(imtpcrop,[]);title('彩色切割')srcyuv=rgb2yuv(imtpcrop);%rgb转换为YUV通道figure;imshow(srcyuv(:,:,2),[]);title('yuv通道')edg=edge(srcyuv(:,:,3),'sobel');%canny边缘检测figure;B=im2bw(uint8(imcrop),0.2);imshow(B,[]);title('二值化')%[L,num] = bwlabel(~B,4);%获取联通区域imwrite(uint8((~B)*255),'x.jpg');figure;imshow(edg,[]);title('边缘')B=uint8((~B)*255);cropAll(B)%最终裁剪recognize%卡号识别end

3 仿真结果

img

img

imgimg

img

4 参考文献

[1]周曦, and 许梅芳. "基于图像的银行卡识别方法及装置.", CN108960221A. 2018.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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

  相关解决方案