Java基于opencv实现图像数字识别(五)—投影法分割字符

Java使用OpenCV进行图像数字投影法分割
本文介绍如何利用Java和OpenCV的水平投影法分割图像中的字符。通过统计二值化图像每行黑色像素,确定切割点,优化后进行图像切割。同样方法可应用于垂直投影法。示例展示了在表格切割中的应用,效果良好。

Java基于opencv实现图像数字识别(五)—投影法分割字符

水平投影法

1、水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像);

2、选出一个最优的阀值,根据比这个阀值大或小,用一个数组记录相应Y轴的坐标;

3、因为是水平切割我们只需要Y轴的切割点即可,宽度默认图像的宽,高度可以用相邻的切割点相减得到;

4、优化切割点,把切割点靠近的都清除掉

5、设置感应区的区域,切割图片

垂直投影法和水平投影法类似,对比思考一下

因为我做的是表格的切割,你如果想实现验证码的切割,或者其他的类比这个,我想也是很容易实现的

我们先看一下,效果,还是很不错的
投影法分割字符

水平切割代码

// 图像切割,水平投影法切割
public List<Mat> cutImgX() {
    int i, j;
    int nWidth = getWidth(), nHeight = getHeight();
    int[] xNum = new int[nHeight], cNum;
    int average = 0;// 记录像素的平均值
    // 统计出每行黑色像素点的个数
    for (i = 0; i < nHeight; i++) {
        for (j = 0; j < nWidth; j++) {
            if (getPixel(i, j) == BLACK) {
                xNum[i]++;
 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值