python实现图片中文字分割效果

yipeiwu_com7年前Python基础

本文实例为大家分享了python实现图片中文字分割的具体代码,供大家参考,具体内容如下

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

face++与python实现人脸识别签到(考勤)功能

face++与python实现人脸识别签到(考勤)功能

项目实现利用face++开发一个课堂签到的软件,实现面向摄像头即可完成记录学号、姓名和时间的签到工作。 项目架构 项目使用场景 代码: 流程代码,主文件 #!usr/bin/ #...

Python基础教程之浅拷贝和深拷贝实例详解

Python基础教程之浅拷贝和深拷贝实例详解            网上关于Pytho...

Python 旋转打印各种矩形的方法

打印旋转矩阵应该是很经典的算法问题了。 题目描述如下: 给定一个m * n要素的矩阵。按照螺旋顺序,返回该矩阵的所有要素。 思路:1,先定义矩阵的左上和右下的坐标,然后通过两个坐标来打印...

django实现登录时候输入密码错误5次锁定用户十分钟

django实现登录时候输入密码错误5次锁定用户十分钟

在学习django的时候,想要实现登录失败后,进行用户锁定,切记录锁定时间,在网上找了很多资料,但是都感觉不是那么靠谱,于是乎,我开始了我的设计,其实我一开始想要借助redis呢,但是想...

python 根据时间来生成唯一的字符串方法

我们很多时候,特别是在生成任务的时候,都需要一个唯一标识字符串来标识这个任务,比较常用的有生成uuid或者通过时间来生成。uuid的话可以直接通过uuid模块来生成。如果是时间的话,可以...