资源简介
基于opencv+java的银行卡图片处理,
这是完整的eclipse 工程,导入项目、修改java文件中的3个地址即可用。
这个项目参考了 csdn 用户:茶饮月 的“Java学习记录--OpenCV使用教程” 而完成。
代码片段和文件信息
package com.test;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
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;
public class BankCardTest {
public final static String openVCLibPath=“C:\\codeinfos\\ocr\\java_opencv\\opencv\\x64\\opencv_java320.dll“;
public final static String imgPath=“C:\\codeinfos\\ocr\\java_opencv\\src\\com\\test\\timg.jpg“;
public final static String savePath=“C:\\idetools\\ocrimg4\\“;
static {
// System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 注意程序运行的时候需要在VM option添加该行 指明opencv的dll文件所在路径
// -Djava.library.path=$PROJECT_DIR$\opencv\x64
// 或者直接加载
System.load(openVCLibPath);
}
public static void main(String[] args) throws Exception {
Mat srcMat = Imgcodecs.imread(imgPath);
Mat destMat = new Mat();
Imgproc.cvtColor(srcMat destMat Imgproc.COLOR_RGB2GRAY);// 转灰色
saveImage(mat2BufferedImage(destMat) “2“);
Mat binaryMat = new Mat(destMat.height() destMat.width() CvType.CV_8UC1);
Imgproc.threshold(destMat binaryMat 28 255 Imgproc.THRESH_BINARY);// 二值
saveImage(mat2BufferedImage(binaryMat) “3“);
Mat element = Imgproc.getStructuringElement(Imgproc.MORPH_RECT new Size(3 3));
Mat erodeMat = new Mat();
Imgproc.erode(binaryMat erodeMat element);// 3*3的图片去腐蚀
saveImage(mat2BufferedImage(erodeMat) “4“);
// for (int y = 0; y < erodeMat.height(); y++)
// {
// for (int x = 0; x < erodeMat.width(); x++)
// {
// //得到该行像素点的值
// double[] data = erodeMat.get(yx);
// for (int i1 = 0; i1 < data.length; i1++) {
// data[i1] = 255;//像素点都改为白色
// }
// erodeMat.put(yxdata);
// }
// }
// for (int y = 0; y < erodeMat.height(); y++) {
// for (int x = 0; x < erodeMat.width(); x++) {
// // 得到该行像素点的值
// double[] data = erodeMat.get(y x);
// for (int i1 = 0; i1 < data.length; i1++) {
// data[i1] = 255;// 像素点都改为白色
// }
// erodeMat.put(y x data);
// }
// }
Mat imgSrc = new Mat();
Imgproc.erode(binaryMat imgSrc element);
int a = 0;
int b = imgSrc.height();
int state = 0;
int imgN = 5;
do {
for (int y = 0; y < imgSrc.height(); y++) {
int count = 0;
for (int x = 0; x < imgSrc.width(); x++) {
// 得到该行像素点的值
byte[] data = new byte[1];
imgSrc.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 <= 100)// 找到了结束行
{// 有效行允许十个像素点的噪声
b = y;
state = 2;
break;
}
}
}
System.out.println(“过滤下界“ + Integer.toString(a));
System.out.println(“过滤
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 362 2017-12-22 13:04 java_opencv\.classpath
文件 387 2017-12-22 12:36 java_opencv\.project
文件 598 2017-12-22 12:36 java_opencv\.settings\org.eclipse.jdt.core.prefs
文件 4681 2018-01-16 10:39 java_opencv\bin\com\test\BankCardTest.class
文件 12163 2017-12-26 14:05 java_opencv\bin\com\test\GasNumTest.class
文件 12495 2017-12-27 09:12 java_opencv\bin\com\test\GasNumTest2.class
文件 4872 2017-12-22 15:30 java_opencv\bin\com\test\Test1.class
文件 5045 2017-12-25 11:08 java_opencv\bin\com\test\Test2.class
文件 11692 2017-12-25 16:34 java_opencv\bin\com\test\Test3.class
文件 12151 2017-12-26 14:05 java_opencv\bin\com\test\Test4.class
文件 17130 2018-01-16 10:37 java_opencv\bin\com\test\timg.jpg
文件 368013 2017-12-22 12:55 java_opencv\opencv\opencv-320.jar
文件 31758848 2017-12-22 12:55 java_opencv\opencv\x64\opencv_java320.dll
文件 26176512 2017-12-22 12:55 java_opencv\opencv\x86\opencv_java320.dll
文件 4838 2018-01-16 10:39 java_opencv\src\com\test\BankCardTest.java
文件 17130 2018-01-16 10:37 java_opencv\src\com\test\timg.jpg
目录 0 2018-01-16 10:41 java_opencv\bin\com\test
目录 0 2018-01-16 10:42 java_opencv\src\com\test
目录 0 2018-01-16 10:41 java_opencv\bin\com
目录 0 2018-01-16 10:41 java_opencv\opencv\x64
目录 0 2018-01-16 10:41 java_opencv\opencv\x86
目录 0 2018-01-16 10:41 java_opencv\src\com
目录 0 2018-01-16 10:41 java_opencv\.settings
目录 0 2018-01-16 10:41 java_opencv\bin
目录 0 2017-12-22 12:59 java_opencv\lib
目录 0 2018-01-16 10:41 java_opencv\opencv
目录 0 2018-01-16 10:41 java_opencv\src
目录 0 2018-01-16 10:41 java_opencv
----------- --------- ---------- ----- ----
58406917 28
............此处省略1个文件信息
相关资源
- 小型酒店管理系统毕业设计javaEE
- “E-家园”个人网站--java开发
- java多种方式实现pdf文件电子签名
- 爬虫搜索简单的搜索引擎java爬虫搜索
- JavaWeb基于SSM框架的仓库管理系统源码
- SSM可运行的基于Java在线学习平台 毕设
- Java 传智播客javaweb毕业设计资料和源
- 分享一套java基于SSM(spring+springMVC+M
- 运动会管理系统 java mysql 完整能运行
- Java ssm 完整项目包括数据库
- 学生成绩管理系统 + javaweb 毕业设计
- Java 基于ssh的社团管理系统的设计与实
- java 网上商城的所有源码数据、黑马传
- 全套五子棋毕业设计
- 基于Java WEB的校园二手交易平台
- java从入门到精通 版 第三版 源码 光
- 基于JavaWeb的医药管理系统.rar
- 网上书店系统java+sqlserver+jsp+servlet+s
- Java+MySQL航空在线订票系统的设计与实
- 快乐农场java开发程序代码
- Java健身房管理系统
- 基于JAVA的物流配送管理系统毕业设计
- java 毕设源码 两套
- 电子相册基于web
- 基于JAVA+SSH的论坛系统
- Flex和java后台结合的视频网站源码
- Java数据库同步系统Web平台
- javaWeb +MySQL 毕业生管理系统
- java实现多个docx文档合并基于docx4j
- 客户管理系统
评论
共有 条评论