资源简介
使用MATLAB语言编写代码对输入的银行卡图片,进行处理分割出银行卡卡号。
代码片段和文件信息
%%
clear;
close all;
clc;
%% 自动弹出提示框读取图像
[filename filepath] = uigetfile(‘.jpg‘ ‘输入一个需要识别的图像‘);
file = strcat(filepath filename);
img = imread(file);
figure;
imshow(img);
title(‘银行卡图像‘);
%% 灰度处理
img1 = rgb2gray(img); % RGB图像转灰度图像
%% 边缘提取
img4 = edge(img1 ‘roberts‘ 0.15 ‘both‘);
%% 图像腐蚀
se=[1;1;1];
img5 = imerode(img4 se);
%% 平滑图像,图像膨胀
se = strel(‘rectangle‘ [30 30]);
img6 = imclose(img5 se);
%% 从图像中删除所有少于500像素8邻接
img7 = bwareaopen(img6 500);
%% 切割出图像
[y x z] = size(img7);
img8 = double(img7); % 转成双精度浮点型
for i = 1 : x
for j = 1 : y / 2
if img8(j i) == 1
img8(j i) = 0;
end
end
end
for i = 1 : x
for j = 213 : y
if img8(j i) == 1
img8(j i) = 0;
end
end
end
for i = 450 : x
for j = 1 : y
if img8(j i) == 1
img8(j i) = 0;
end
end
end
% imshow(img8)
%找到银行卡卡号区域的位置
%% 切割出图像
[y x z] = size(img8);
img8 = double(img8); % 转成双精度浮点型
blue_Y = zeros(y 1);
for i = 1:y
for j = 1:x
if(img8(i j) == 1) % 判断车牌位置区域
blue_Y(i 1) = blue_Y(i 1) + 1; % 像素点统计
end
end
end
% 找到Y坐标的最小值
img_Y1 = 1;
while (blue_Y(img_Y1) < 5) && (img_Y1 < y)
img_Y1 = img_Y1 + 1;
end
% 找到Y坐标的最大值
img_Y2 = y;
while (blue_Y(img_Y2) < 5) && (img_Y2 > img_Y1)
img_Y2 = img_Y2 - 1;
end
% x方向
blue_X = zeros(1 x);
for j = 1:x
for i = 1:y
if(img8(i j) == 1) %
blue_X(1 j) = blue_X(1 j) + 1;
end
end
end
% 找到x坐标的最小值
img_X1 = 1;
while (blue_X(1 img_X1) < 5) && (img_X1 < x)
img_X1 = img_X1 + 1;
end
% 找到x坐标的最小值
img_X2 = x;
while (blue_X(1 img_X2) < 5) && (img_X2 > img_X1)
img_X2 = img_X2 - 1;
end
% 对图像进行裁剪
img9 = img(img_Y1- 3:img_Y2- 6 img_X1-3:img_X2 :);
%
imwrite(img9 ‘银行卡图像.jpg‘);
%% 对银行卡图像作图像预处理
plate_img = imread(‘银行卡图像.jpg‘);
% 转换成灰度图像
plate_img1 = rgb2gray(plate_img); % RGB图像转灰度图像
% 直方图均衡化
plate_img2 = histeq(plate_img1);
% 二值化处理
plate_img3 = im2bw(plate_img2 0.76);
% 中值滤波
plate_img4 = medfilt2(plate_img3);
imgRes = zeros(y x);
for i = img_X1 - 3 : img_X2
for j = img_Y1 - 3 : img_Y2 - 6
imgRes(j i) = plate_img4(j - img_Y1 + 4 i - img_X1 + 4);
end
end
imshow(imgRes);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2586 2018-12-27 16:26 银行卡号识别\main.m
文件 20061 2018-12-27 11:01 银行卡号识别\微信图片_20181227110015.jpg
文件 6463 2019-03-30 09:35 银行卡号识别\银行卡图像.jpg
目录 0 2019-03-30 09:35 银行卡号识别
----------- --------- ---------- ----- ----
29110 4
相关资源
- 视频运动目标检测与跟踪 matlab代码
- 无线传感器网络 matlab 程序
- 基于空间几何变换的人脸对齐(Matl
- matlab图像拼接
- 遗传算法求pid
- 正弦合成法实现的瑞利多径信道MATL
- Huffman编码及译码的MATLAB实现
- matlab 流形学习算法 降维算法 LLE Is
- MATLABPID仿真程序
- 压缩感知离散余弦变换基-小波基MAT
- 广度优先遍历树的matlab算法实现
- matlab三维曲线拟合
- 无刷直流电机转速电流双闭环matlab仿
- ldpc编解码的实现
- matlab程序 梯度校正参数辨识程序
- 多重网格matlab程序
- GM11灰色模型预测的matlab程序
- 路径损耗模型的MATLAB仿真
- 近似熵matlab程序
- DVHOP的MATLAB仿真代码
- KNN算法的Matlab实现
- LMS算法的MATLAB实现以及
- 语音信号的线性预测编码MATLAB程序
- 投影寻踪算法的matlab代码
- 信噪比SNR MATLAB程序
- PCM的matlab实现
- 水准网条件平差matlab编程的m文件
- raw图像数据读取matlab程序
- matlab程序:用提升小波变换进行信号
- 小子域滤波代码 用MATLAB实现
评论
共有 条评论