基于OpenCV&Tesseract;-OCR实现银行卡号识别


基于opencv+Tesseract-OCR的银行卡图片处理,智能识别银行卡号
资源截图
代码片段和文件信息
package com.zmx.opencvtest;

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.io.File;

import javax.imageio.ImageIO;

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Rect;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**
 * Created by zhangwenchao on 2017/9/27.
 */
public class FirstOpenCVTest {
static {

// 注意程序运行的时候需要在VM option添加该行 指明opencv的dll文件所在路径
// -Djava.library.path=$PROJECT_DIR$opencvx64
System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // 载入opencv all库
}

public static void main(String[] args) throws InterruptedException {

/**
 * 1. 读取原始图像转换为OpenCV的Mat数据格式
 */

Mat srcMat = Imgcodecs.imread(“E:/opencv/20170928170446795.jpg“); // 原始图像

/**
 * 2. 强原始图像转化为灰度图像
 */
Mat grayMat = new Mat(); // 灰度图像
Imgproc.cvtColor(srcMat grayMat Imgproc.COLOR_RGB2GRAY);

BufferedImage grayImage = toBufferedImage(grayMat);

saveJpgImage(grayImage “E:/grayImage.jpg“);

System.out.println(“保存灰度图像!“);

/**
 * 3、对灰度图像进行二值化处理
 */
Mat binaryMat = new Mat(grayMat.height() grayMat.width() CvType.CV_8UC1);
Imgproc.threshold(grayMat binaryMat 20 255 Imgproc.THRESH_BINARY);
BufferedImage binaryImage = toBufferedImage(binaryMat);
saveJpgImage(binaryImage “E:/binaryImage.jpg“);
System.out.println(“保存二值化图像!“);

/**
 * 4、图像腐蚀---腐蚀后变得更加宽粗.便于识别--使用3*3的图片去腐蚀
 */
Mat destMat = new Mat(); // 腐蚀后的图像
Mat element = Imgproc.getStructuringElement(Imgproc.MORPH_RECT new Size(3 3));
Imgproc.erode(binaryMat destMat element);
BufferedImage destImage = toBufferedImage(destMat);
saveJpgImage(destImage “E:/destImage.jpg“);
System.out.println(“保存腐蚀化后图像!“);

/**
 * 5 图片切割
 */

// 获取截图的范围--从第一行开始遍历统计每一行的像素点值符合阈值的个数再根据个数判断该点是否为边界
// 判断该行的黑色像素点是否大于一定值(此处为150)大于则留下找到上边界下边界后立即停止
int a = 0 b = 0 state = 0;
for (int y = 0; y < destMat.height(); y++)// 行
{
int count = 0;
for (int x = 0; x < destMat.width(); x++) // 列
{
// 得到该行像素点的值
byte[] data = new byte[1];
destMat.get(y x data);
if (data[0] == 0)
count = count + 1;
}
if (state == 0)// 还未到有效行
{
if (count >= 150)// 找到了有效行
{// 有效行允许十个像素点的噪声
a = y;
state = 1;
}
} else if (state == 1) {
if (count <= 150)// 找到了有效行
{// 有效行允许十个像素点的噪声
b = y;
state = 2;
}
}
}
System.out.println(“过滤下界“ + Integer.toString(a));
System.out.println(“过滤上界“ + Integer.toString(b));

// 参数坐标X坐标Y截图宽度截图长度
Rect rect = new Rect(0 a destMat.width() b - a);
Mat resMat = new Mat(destMat rect);
BufferedImage resImage = toBufferedImage(resMat);
saveJpgImage(resImage “E:/resImage.jpg“);
System.out.println(“保存切割后图像!“);

/**
 * 识别-
 */
/*
 * try { Process pro = Runtime.getRuntime().exec(new Strin

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     251213  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客.html

     文件      45476  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_filesf000PiLlj5bkTw5OmCI46.jpg

     文件      96102  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files20170928170446795

     文件      89744  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files20170928170652905

     文件      53233  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files20170928170720889

     文件      57150  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files20170928170758858

     文件      20054  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files20170928170831077

     文件       5106  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files2_hy0835.jpg

     文件      11810  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_daguairen.jpg

     文件       2964  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_eternity1118_.jpg

     文件       1644  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_foreverhot1019.jpg

     文件       1683  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_hy0835.jpg

     文件      14275  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_lmj623565791.jpg

     文件       1575  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_lovemysea.jpg

     文件       1575  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_mkflyfly.jpg

     文件       4009  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_ocr13512721355.jpg

     文件       7587  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_ocr_recognition.jpg

     文件       2825  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_pretender05.jpg

     文件      10721  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_qq_29672495.jpg

     文件       2390  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_u013035197.jpg

     文件       1575  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_wanglha.jpg

     文件      12531  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_xingyun1992.jpg

     文件       1575  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_yangbingzhou.jpg

     文件      12688  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_zmx729618.jpg

     文件       6907  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files3_zz110731.jpg

     文件       1165  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_files52b5334.js.下载

     文件      32188  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_filesadClosefeedbackUpgrade.min.js(1).下载

     文件      31759  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_filesadClosefeedbackUpgrade.min.js.下载

     文件         49  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_filesadx(1).php

     文件         49  2018-03-04 23:00  参考资料Java使用OpenCV和Tesseract-OCR实现银行卡图片处理与卡号识别 - CSDN博客_filesadx(2).php

............此处省略169个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)