基于opencv银行卡识别系统
文章目录
一、项目技术
开发语言:Python
python框架:Django
软件版本:python3.7/python3.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
开发软件:PyCharm/vs code
前端框架:vue.js
二、项目内容和功能介绍
快的发展,加速了金融行业的管理变迁并创造了金融业务的迭代。同时,网络技术的发展也提供给了本文很多商业软件,许多商业软件在工作过程中都需要用户信用卡或者商用付款方式的信息。而目前,大部分的软件带给用户不好体验的原因是因为他们工作环境苛刻并且识别准确率低。通常要求用户手工输入信用卡的银行卡号,位数最长有16~19位,容易出错并且可能重复,需人机介入进行核对和修补等步骤,影响用户工作体验和效率。因此,为了解决这一问题,本研究以我国各大商业银行作为研究目标,设计开发出一个通过图像处理可以自动精准识别银行卡号的系统,其理论研究和应用研究都具意义。
本文重点描述了银行卡的图像预处理、文本定位、文本切分和文本识别阶段。先经过灰度处理、二值化、去噪等对图像进行预处理操作;再运用EAST模型确定准确的文本区,得到卡体的定位区域;然后通过边界检测的方法实现分切文字;最后使用了CRNN作为最后一个识别阶段,CRNN结合了CNN和RNN的功能,具有快速、精确识别字符的能力,并对最终结果采用模板匹配的方式得出结果。本文的程序是在Python编程环境下运用Pycharm环境构建完成的,可以很好地实现银行卡上的文字和字色的区分,并可以完整输出卡号。
3.1. 数据采集
在银行卡识别模型中,数据的采集主要是通过百度手动收集银行卡相关图片,进行文件夹的整理,并且对文件夹进行取名,在图像进行分类之前,需要将图像进行指定的标签设置,并且将不同类型的图像存储为不同的文件夹,将银行卡的图片统一放到名为bank的文件夹中,并将每一张图片命名为类似“img_bank_1”的格式。
在数据采集方面一共采集了12000张图片,涵盖了各大银行的银行卡。
3.2. 数据预处理
对下载整理好的数据集进行图像的预处理工作是十分重要的,有利于提高图片的质量,以便进一步提高模型的准确率,首先在TensorFlow框架下通过torchvision.transform.Compose管理所有的transforms操作,使用transforms下的RandomResizedCrop、RandomHorizontalFlip、ToTensor、Normalize对图像进行了预处理,将给定图像随机裁剪为不同的大小和宽高比,然后缩放所裁剪得到的图像为制定的大小224,以给定的概率随机水平旋转给定的PIL的图像,默认为0.5,然后将给定图像转为Tensor张量并进行归一化处理,最后通过torch.utils.data.DataLoader,这个类将list类型的输入数据,图像和标签分别封装成一个Tensor数据格式,让模型在Pytorch框架下使用。
进行图像预处理后,需要进行将不同的图像进行分类,用self.CLASS_NAMES函数来表示标签,设置分类,然后进行指向图片包的文字说明。也就是说将多种不同的图片,进行文字的说明,当图像进行识别时,可以根据不同的文字内容进行识别。首先设置的是多种不同的图像内容,然后每一个文件夹,指向不同的文件夹,然后进行分类,此外普通物品有另一份代码标签,由于篇幅代码过多问题,没有添加,仅仅进行了垃圾图片文件和普通物品文件的命名标签。
将不同的图像的分类放入指定的路径后,并且进行了数据集的指向说明后,需要进行图像的尺寸以及大小进行设置,图像的大小为256,然后将图像中心坐标设置为224,最后将所有图像变成指定的大小。主要是由于图像在保存分类时有的比较大,有的比较小,这样统一设置有助于识别。将图像保存后,开始进行图像的路径的指向,路径输入正确后,可以选择图片的路径,然后开始进行识别不同的分类。然后进行记事本文件的构建,进行图像集的命名,命名后进行txt文件的命名。通过txt文件将不同的垃圾图片,进行标签的命名,便可以在系统中进行标签设置。
三、核心代码
部分代码:
package com.controller;
import java.util.Arrays;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.service.ConfigService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("config")
@RestController
public class ConfigController{
@Autowired
private ConfigService configService;
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ConfigEntity config){
EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ConfigEntity config){
EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params));
return R.ok().put("data", page);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
ConfigEntity config = configService.selectById(id);
return R.ok().put("data", config);
}
/**
* 详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") String id){
ConfigEntity config = configService.selectById(id);
return R.ok().put("data", config);
}
/**
* 根据name获取信息
*/
@RequestMapping("/info")
public R infoByName(@RequestParam String name){
ConfigEntity config = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
return R.ok().put("data", config);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody ConfigEntity config){
// ValidatorUtils.validateEntity(config);
configService.insert(config);
return R.ok();
}
/**
四、效果图











五 、资料获取
文章下方名片联系我即可~
精彩专栏推荐订阅:在下方专栏👇🏻
毕业设计精品实战案例
收藏关注不迷路!!
🌟文末获取设计🌟
更多推荐



所有评论(0)