opencv 银行卡识别别是如何识别银行卡的,opencv 银行卡识别别技巧是什么?

摘要:相较于传统的人工录入方式,此方式更为灵活方便,只要把银行卡对着镜头,银行卡识别结果以及卡类型就自动导入系统,方便快捷,准确率更高。
随着支付宝、微信等移动支付的发展壮大,移动支付也成为现在时下最流行的支付方式,怎么提高用户支付体验,优化自身生态成了主要的方向。其中实名登记以及银行卡的绑定成为客户体验的关键一环。
技术支持:王伟明 & (微信),QQ:
银行卡识别成为主流移动支付平台的客户体体验的最佳选择&
熟悉移动支付的人都清楚,无论是支付宝、微信支付还是Apple&Pay,在绑定银行卡这一环节中,他们都搭载了OCR银行卡识别技术。&
银行卡识别可谓出尽风头,它给用户带来全新体验的同时,也让业界认识到,科技改变的不仅仅是生活,改变的还是整个支付行业的生态。&
银行卡识别开发包,它是利用OCR识别技术,将银行卡图片中的数字信息以及银行类别识别提取出来,并将识别后的结果已接口的形式提供给开发人员,免于人工繁琐的输入。比如说现在使用Apple&Pay进行支付时,绑定的各大行的银行卡在不同的支付场景有不同的优惠,那么为了在生活中能够享受到更多的优惠,有人势必就要将他所有的银行卡、信用卡都绑定进来。&
相较于传统的人工录入方式,此方式更为灵活方便,只要把银行卡对着镜头,银行卡识别结果以及卡类型就自动导入系统,方便快捷,准确率更高。
银行卡识别API为众多平台提供可能&
可以预见,随着移动互联网和智能终端的发展,移动支付势必将成为人们支付生活中的主要场景。而已经被主流支付平台养刁的用户,如果你的平台不能变得更好,那么在这个支付手段比钱多的时代,你势必将没有机会角逐在这个战场。&
银行卡识别API现在不仅可以在安卓以及iOS前端进行识别后输出结果,还可以把识别接口部署到云端,现在支持windows以及Linux32位、64位的私有云或者公有云,这样只需把图片上传到云端,结果就会通过云来反馈给您。
本文仅代表作者观点,不代表百度立场。本文系作者授权百度百家发表,未经许可,不得转载。
分享到微信朋友圈
打开微信,点击 “ 发现 ”
使用 “ 扫一扫 ” 即可将网页分享至朋友圈。
扫一扫在手机阅读、分享本文
百家号作者平台APP
扫码下载安卓客户端
便捷管理文章信息
随时查看文章收益银行卡识别技巧及方法分析
关键词:银行卡识别 银行卡号识别 银行卡号解析
在互联网金融日益繁盛的当下社会,银行卡的功能其实是有所弱化的。但是作为存储途径确实占有极其重要的作用。像电商购物、P2P信贷等都需要绑定银行卡来作为钱款进出所用。因此互联网金融越发达,银行卡识别的需求也越强烈。
银行卡识别可支持Android、iOS主流移动操作系统,国内各个银行的信用卡、储蓄卡(平面字体和凹凸字体),均可识别,而且识别率高、识别速度快。除了移动端可以调用银行卡识别ocr,同时还提供私有云端的调用。银行卡识别技术也可以部署在识别服务器上,可支持Linux 32/64位操作系统、Windows 32位/64位操作系统。用户可部署到自有服务器上,APP可直接调用银行卡识别服务。保证了识别的安全。
众所周知,手工录入弊端很多:容易出错,输入速度慢,客户体验不好。有了银行卡识别,可以在数秒内将银行卡面的信息读取并作输出。完美解决了手工录入的弊端。并且在效率为王的当今社会,是极其必要的。像京东金融、蚂蚁金服、苏宁金融等都需要跟银行卡作关联,因此银行卡识别的需求可谓无处不在了。
银行卡识别的应用领域
金融保险:移动展业、移动查勘等需要银行卡号金融P2P:绑定银行卡进行钱款出入银行:直销银行、手机银行绑卡移动支付:绑定银行卡进行支付记账理财:信用卡、银行卡管理类APP银行卡号录入
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。银行卡号识别(三) ---
基于k最近邻的数字识别测试 -
- ITeye博客
博客分类:
在进行完预处理之后,我们可以开始用算法识别数字了。首先我们不做那么复杂的、一连串银行卡数字的识别,而是做一个数字的测试。
一、机器算法的引入-----K近邻算法
K最近邻(k-Nearest Neighbour,KNN)分类算法是一个理论上比较成熟的算法,也是最简单的机器学习算法之一。顾名思义,k最近邻实际上就是取和待分类物最相似的k个模板,然后这k个模板中所占比例最高的类别就是最后决定的类别。
思路就是这么简单,那么这个最近的距离如何计算呢?往往用欧氏距离等经典距离来衡量模板和待分类物的“距离”。
KNN很适合在有大量样本的情况下进行使用,当然,这也带来了速度较慢的问题。
于是KNN就非常简单了。
二、准备工作----模板准备
我们只做单个数字的检测,来检验我们所写的算法的正确性,所以类似单片机中串口自发自收的测试方法,我们可以用模板来识别模板,从而检测算法的正确性。
我们在画图板中写入0-9十个数字(大小并没有特殊要求,后面程序会进一步处理),并一一截图保存变成我们的样本,并放在工程目录下:
模板准备完毕。
三、整体思路
1&读取模板:我们这里有10个类别,即0-9十个数字,每个类别有一个样本,一共十个模板,我们需要读入程序中,用IplImage或者cvMat进行存储;
2&模板调整(示模板情况而定需不需要该步骤):也可以说是提取特征区域吧,因为模板是手动截图的,每个模板打大小不是严格一样的,但是作为模板匹配来说,我们需要的是统一的尺寸标准,所以我们需要将导入的模板图片调整到统一的、合适的尺寸。
在http://blog.csdn.net/wangyaninglm/article/details/的博客上我看到了非常合适的解释图,在这里也分享给大家:
这里提取出来的ROI是模板的有效部分,但是大小还是不一定符合统一尺寸的要求,所以,我们要进行适当的放缩
3&训练数据:这是我认为的算法最关键的部分。这里有几个参数:
Classes:类型数量
Train_simples:每个类型的样本数量
trainData:模板的训练集,
trainClasses:训练集所对应的类别标号
接下来我想解释一下trainData,trainClasses是个啥,但是感觉说太多也并不一定能够说得清楚,所以,请见下图所示:
trainData:
trainClasses:
看了上图之后,相信大家对k最近邻算法会有自己的想法了。可以看出,得到训练集的关键就是得到样本的特征向量。有很多特征向量的提取方法,详细的会在后面阐述,这里只介绍最简单的一种方法:
当模板不大的时候,我们可以将模板(可以看做一个n*m的矩阵)展开成一个n*m的一维向量,这就是这个模板的特征。事实上,有了第二步的预处理(ROI的提取),模板几乎就只有数字那么大了,所以模板是很小的,要想得到全部的信息,该方法再好也再简单不过了。
4&得到了trainData、trainClasses后,就可以利用openCV的函数进行k最近邻的算法求解了
所有步骤结束,是不是很简单呢?
接下来看看实际的实现过程和结果------关键函数代码:
void getData()
{//得到训练数据
IplImage* src_
IplImage* prs_image = cvCreateImage(cvSize(new_width, new_height), 8, 1);
CvMat row,
CvMat rowb,
int c = 0;
int i,j,k;
CvMat* srcImg = cvCreateMat(32,32,CV_32FC1);
char filename[50];
char a[32][32];
for(m =0; m&m++)//总共10个数字
for(n = 0; n&train_n++)//每个数字50个样本
// 这里是读入图片样本
sprintf(file, "%d%d.bmp", i, j);
src_image = cvLoadImage(file);
if(!src_image)
printf("Error: Cant load image %s\n",file);
IplImage* gray_image = cvCreateImage(cvGetSize(src_image), 8, 1);
IplImage* binary_image = cvCreateImage(cvGetSize(src_image), 8, 1);
cvCvtColor(src_image, gray_image, CV_BGR2GRAY);
cvThreshold(gray_image, binary_image, 100, 255, CV_THRESH_BINARY);
//process file
//将模板按照尺寸大小将有效部分放缩
prs_image = preprocessing(prs_image);
//生成训练矩阵,每个图像作为一个向量
cvGetRow(trainClasses, &row,m*train_samples +n);//y
cvSet(&row,cvRealScalar(m));
//Set data
cvGetRow(trainData, &rowb,m*train_samples +n);//x
IplImage *img = cvCreateImage(cvGetSize(prs_image),IPL_DEPTH_32F, 1 );
//转换换 8 bits image to 32位浮点数图片取值区间为[0,1]
//将模板图像转换成一个一维向量作为特征向量
//scale = 0.0039215 = 1/255;
cvConvertScale(prs_image,img, 0.);
cvGetSubRect(img, &data,cvRect(0,0,new_width,new_height));
CvMat row_header, *row1;
//convert data matrix sizexsize to vecor
row1 =cvReshape( &data, &row_header, 0, 1 );
cvCopy(row1, &rowb,NULL);
IplImage *preprocessing(IplImage*imgSrc)
{//放缩模板图像的有效部分
IplImage* scaledR
CvMat dataA;
CvRect//bounding box
CvRect//boundinb box maintain aspect ratio
//Find bounding box找到边界框
bb=findBB(imgSrc);
cvGetSubRect(imgSrc, &data,cvRect(bb.x,bb.y,bb.width,bb.height));
int size=(bb.width&bb.height)?bb.width:bb.
result=cvCreateImage( cvSize( size, size ), 8, 1 );
cvSet(result,CV_RGB(255,255,255),NULL);
//将图像放中间,大小归一化
int x=(int)floor((float)(size-bb.width)/2.0f);
int y=(int)floor((float)(size-bb.height)/2.0f);
cvGetSubRect(result, &dataA,cvRect(x,y,bb.width,bb.height));
cvCopy(&data, &dataA, NULL);
//Scale result
scaledResult=cvCreateImage( cvSize( new_width, new_height ), 8, 1 );
cvResize(result, scaledResult, CV_INTER_NN);
//Return processed data
return scaledR//直接返回处理后的图片
CvRect findBB(IplImage *img)
{//找模板图像有效图像的边框,方便抠下来
CvMemStorage *storage = cvCreateMemStorage(0);
IplImage* temp = cvCreateImage(cvGetSize(img), 8, 1);
cvCopy(img, temp);
int a = cvFindContours(temp, storage, &contour, sizeof(CvContour),CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
CvRect rect,
rect = cvBoundingRect( contour, 0 );
有了上面代码的基础,我们就得到了trainData、trainClasses训练集,那么接下来我们要抠取待测图片的有效区域,并且生成相应的特征向量,当然这里生成特征向量的方法要和前面生成训练集时用的方法保持一致。
训练完之后我们就可以利用openCV函数对训练集和待测数据进行k最近邻计算具体函数见下:
int do_ocr(IplImage *img)
pimage = preprocessing(img);
IplImage *image = cvCreateImage(cvGetSize(pimage),IPL_DEPTH_32F, 1 );
//转换换 8 bits image to 32位浮点数图片取值区间为[0,1]
//scale = 0.0039215 = 1/255;
cvConvertScale(pimage,image, 0.);
cvGetSubRect(image, &data,cvRect(0,0,new_width,new_height));
vec = cvReshape(&data, &mathdr, 0, 1);
//SumMat(*vec);
CvMat* nearest = cvCreateMat( 1, K, CV_32FC1);
float ret = knn-&find_nearest(vec, K, 0, 0, nearest, 0);
return (int)
按照我上文中说的思路很容易得到我们想要的结果:
测试图片:
测试结果:
浏览: 75623 次
来自: 上海
请问博主,大概在130行:Bitmap bmp = getRe ...
您好,我想请教一下关于银行卡识别的问题,您方便加一下我QQ吗? ...
闵大荒是什么?
写的很棒。加油拒绝访问 | www.1398.org | 百度云加速
请打开cookies.
此网站 (www.1398.org) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(38fa281a46d243ad-ua98).
重新安装浏览器,或使用别的浏览器}

我要回帖

更多关于 银行卡识别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信