基于OpenCV(python)的实现文本分割之垂直投影法
作者:Keras深度学习 时间:2023-11-17 08:45:39
在我的上一篇博客中讲述了水平投影法取出文本行图像的实现,在这里将用垂直投影法对文本行的每个字符进行分割。下图是用水平投影法切割的文本行:
文本分割的原理如下,先用水平投影取出单一文本行,接着使用垂直投影法达到对单个字符进行分割。
代码如下:
import numpy as np
import cv2
def get_vvList(list_data):
#取出list中像素存在的区间
vv_list=list()
v_list=list()
for index,i in enumerate(list_data):
if i>0:
v_list.append(index)
else:
if v_list:
vv_list.append(v_list)
#list的clear与[]有区别
v_list=[]
return vv_list
if __name__=='__main__':
img_bgr=cv2.imread('./testImg/2.png',1)
if not img_bgr is None:
img=img_bgr.copy()
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化
t,binary=cv2.threshold(img_gray,0,255,cv2.THRESH_OTSU+cv2.THRESH_BINARY)
'''
垂直投影为从上往下投射,统计每一列的黑色像素总数
'''
rows,cols=binary.shape
ver_list=[0]*cols
for j in range(cols):
for i in range(rows):
if binary.item(i,j)==0:
ver_list[j]=ver_list[j]+1
'''
对ver_list中的元素进行筛选,可以去除一些噪点
'''
ver_arr=np.array(ver_list)
ver_arr[np.where(ver_arr<1)]=0
ver_list=ver_arr.tolist()
#绘制垂直投影
img_white=np.ones(shape=(rows,cols),dtype=np.uint8)*255
for j in range(cols):
pt1=(j,rows-1)
pt2=(j,rows-1-ver_list[j])
cv2.line(img_white,pt1,pt2,(0,),1)
cv2.imshow('垂直投影',img_white)
cv2.waitKey(0)
#切割单一字符
vv_list=get_vvList(ver_list)
for i in vv_list:
img_ver=img_bgr[:,i[0]:i[-1]]
cv2.imshow('单一字符',img_ver)
cv2.waitKey(0)
运行程序,垂直投影图像如下图所示:
分割的单一字符如下图:
单个数字已经正确分割出来了。
来源:https://blog.csdn.net/qq_37781464/article/details/113126450
标签:OpenCV,垂直投影
0
投稿
猜你喜欢
python 点云地面点滤波-progressive TIN densification(PTD)算法介绍
2023-05-26 17:50:55
python实现支付宝当面付(扫码支付)功能
2023-04-01 21:38:45
django认证系统 Authentication使用详解
2021-10-02 19:05:07
Tensorflow 多线程设置方式
2021-09-29 21:53:50
详解Python读取配置文件模块ConfigParser
2022-02-25 09:05:23
一文带你了解Go语言实现的并发神库conc
2024-05-13 10:43:22
python 实现按对象传值
2023-05-26 14:20:18
js调用AJAX时Get和post的乱码解决方法
2024-05-09 10:38:11
pytorch实现textCNN的具体操作
2022-08-28 17:40:00
Python OpenCV Hough直线检测算法的原理实现
2021-01-29 10:10:00
Laravel配置全局公共函数的方法步骤
2023-11-15 01:20:42
Node.js中环境变量process.env的一些事详解
2024-05-13 09:28:41
浅谈MySQL模糊查询中通配符的转义
2024-01-26 06:51:57
Python数据可视化教程之Matplotlib实现各种图表实例
2021-08-19 01:18:10
Python pickle模块用法实例
2022-06-30 10:29:04
原生JS实现弹幕效果的简单操作指南
2024-04-22 22:31:20
mysql查询条件not in 和 in的区别及原因说明
2024-01-27 12:41:49
用javascript实现的支持lrc歌词的播放器
2024-04-10 14:03:33
Mysql的MERGE存储引擎详解
2024-01-25 22:26:49
numpy.ndarray 实现对特定行或列取值
2022-05-14 09:17:24