OpenCV-Android平台应用实战 - 银行卡卡号识别(06、卡号区域发现与截取)

卡号区域发现与截取

  • 卡号区域定位
  1. RGB与HSV色彩空间:色彩空间转换,通过 cvtColor() 实现。
  2. inRange过滤
  3. 比例与定位计算
  • 区域截取

程序代码

  • 完善算法部分 (TextImageProcessor.java):
package com.example.bankcardrec.ocr.algo;

import android.net.Uri;
import android.os.Environment;
import android.util.Log;

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

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * Created by Administrator on 2019/4/2/002.
 */

public class TextImageProcessor {
   
    private String TAG = "OCR-Algorithm";

    //寻找卡号区域
    public Mat findCardNumBlock(Mat card) {
   
        Mat hsv = new Mat();//HSV空间的Mat对象
        Mat binary = new Mat();

        // convert RGB to HSV,色彩空间转换
        Imgproc.cvtColor(card, hsv, Imgproc.COLOR_BGR2HSV);
        Core.inRange(hsv, new Scalar(30, 40, 45), new Scalar(180, 255, 255), binary);//过滤

        // remove noise, 去除噪点
        Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(5, 5));
        Imgproc.morphologyEx(binary, binary, Imgproc.MORPH_OPEN, kernel);

        // 轮廓发现,寻找Logo
        List<MatOfPoint> contours = new ArrayList<>();
        Mat hireachy = new Mat();
        Imgproc.findContours(binary, contours, hireachy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE, new Point(0, 0));
        int offsetx = binary.cols()/3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值