python将图片中的文字分割

本文介绍了一种基于像素的图像文字分割算法,通过设定最小文字像素高度和宽度,实现对图像中的文字进行准确分割。文章详细展示了算法的实现过程,包括图像读取、尺寸调整、行和列分割,以及文字块的归一化处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 原始图片(包含数字):

    结果图 :

2  原始图片(包含文字):

 结果图 :

3 代码如下:

import cv2
import numpy as np

path = 'test.jpg'
root = 'output\\'
# 图像resize
dsize = 36
img = cv2.imread(path)
data = np.array(img)
height = data.shape[0]
width = data.shape[1]
# 设置最小的文字像素高度
min_val = 10

start_i = -1
end_i = -1
# 存放每行的起止坐标
rowinfo = []

# 行分割
for i in range(height):

    # 行中有字相关信息
    if (not data[i].all()):
        end_i = i
        if(start_i < 0):
            start_i = i
            pass
    # 行中无字相关信息
    elif (data[i].all() and start_i >= 0):
        if(end_i - start_i >= min_val):
            rowinfo.append((start_i, end_i))
            pass
        start_i, end_i = -1, -1
print(rowinfo)

# 列分割
start_j = -1
end_j = -1
# 最小文字像素宽度
min_val_word = 5
# 分割后保存编号
number = 0
for start, end in rowinfo:
    for j in range(width):
        # 列中有字相关信息
        if(not data[start: end, j].all()):
             end_j = j
             if(start_j < 0):
                 start_j = j
                 pass
        # 列中无字信息
        elif(data[start: end, j].all() and start_j >= 0):
            if(end_j - start_j >= min_val_word):
                img = data[start:end, start_j: end_j]
                im2save = cv2.resize(img, (dsize, dsize)) #归一化处理
                cv2.imwrite(root + '%d.jpg' % number, im2save)
                number += 1
                pass
            start_j, end_j = -1, -1

 

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackilina_Stone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值