资源简介
基于OpenCV Java的Android项目工具完整代码,请自行集成OpenCV Android SDK,然后把工具文件拖进去就可以测试使用。 参考了CSDN 用户:茶饮月 的“Java学习记录--OpenCV使用教程” 而完成。
代码片段和文件信息
package com.example.nicesky.idphoto_opencv330_jni.java.practice;
import android.graphics.Bitmap;
import com.example.nicesky.idphoto_opencv330_jni.java.L;
import org.opencv.android.Utils;
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 fairytale110@foxmail.com on 2018/5/17.
* com.example.nicesky.idphoto_opencv330_jni.java.practice
* IdPhoto_OpenCV330_Jni
* DEscriptION:
* UPDATE_BY:
* UIPDATE_DATE:
*/
public class Practice {
private static String TAG = “Practice==> “;
private static double thresh = 25;
private static double maxval = 255;
/**
*
* @param filePath 银行卡图片在SD卡的完整路径 如 /storage/emulated/0/img_credit.png
* @return
*/
public static Bitmap getNumImg(String filePath) {
//Bitmap srcBtimap = BitmapFactory.decodeFile(fileName);
//读取图像
Mat srcMat = Imgcodecs.imread(filePath);
// Mat srcMat = new Mat(srcBtimap.getHeight()srcBtimap.getWidth() CvType.CV_8UC3);
// Utils.bitmapToMat(srcBtimapsrcMat);
Mat dsstMat = new Mat(srcMat.height() srcMat.width() CvType.CV_8UC3);
//灰度,,黑白照
Imgproc.cvtColor(srcMat dsstMat Imgproc.COLOR_RGB2GRAY);
//二值化处理 ,只留两个值,黑白
Mat binaryMat = new Mat(dsstMat.height() dsstMat.width() CvType.CV_8UC1);
Imgproc.threshold(dsstMat binaryMat thresh maxval Imgproc.THRESH_BINARY);
//使用3*3的图片去腐蚀
Mat erodeMat = new Mat();
Mat element = Imgproc.getStructuringElement(Imgproc.MORPH_RECT new Size(3 3));
Imgproc.erode(binaryMat erodeMat element);
//遍历获取和修改像素值
//二值图片当成一个二维矩阵就可以了双重循环使用get方法获取像素点使用put方法修改像素点
// 6.过滤和切割
/**
过滤和切割要找到一个开始行或列结束行或列这就有一个简单的算法.
该算法从第一行开始遍历
统计每一行的像素点值符合阈值的个数再根据个数判断该点是否为边界.
找到后过滤和切割自然就很简单了直接创建个该范围的新的Mat对象.*/
Mat imgSrc = new Mat();
Imgproc.erode(binaryMat imgSrc element);
int a = 0;
int b = imgSrc.height();
int state = 0;
int imgN = 5;
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;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 872553 2018-05-17 17:00 img_creditcard.png
文件 4225 2018-05-18 11:44 Practice.java
相关资源
- Java 编程思想源代码使用导入eclipse流
- android-smart-image-view-master图片异步+使用
- JAVA学籍管理系统mvc
- 基于c/s架构的JAVA聊天程序 ,服务端和
- java定时从ftp服务器更新相关文件
- java 程序工资管理系统
- JAVA实现ftp客户端的上传、、删除
- android手机 OTG功能调试usb串口的demo程
- 购物网站(基于jsp+javabean+mysql三层结
- javaEE复习题
- RefInvoke.java
- 华为 java 安全 编码 规范 安全篇 2.0
- 基于Android的个人理财助手的设计与实
- Android串口调试工具源码
- JAVA实训报告万年历
- java 学生管理系统Eclipse编写
- android客户端实现模糊查找
- ChineseChessView.java
- java面板多线程发牌程序
- android PinnerListView
- unity服务器图片保存本地并加载(an
- java简单桌面考试系统可实现倒计时、
- java代码实现填充word模板生成word合同
- android备忘录实现
- 操作系统课程设计——“生产者消费
- 使用java实现Xmodem协议
- 公交管理系统java+MySQL源码及设计报告
- java实现坦克大战联机
- 钉钉企业应用Demo(Java)
- JAVA实验报告(四)-李兆明.doc
评论
共有 条评论