在我的上一篇博客中讲述了水平投影法取出文本行图像的实现,在这里将用垂直投影法对文本行的每个字符进行分割。下图是用水平投影法切割的文本行:

文本分割的原理如下,先用水平投影取出单一文本行,接着使用垂直投影法达到对单个字符进行分割。
代码如下:

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_listif __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.shapever_list=[0]*colsfor 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)]=0ver_list=ver_arr.tolist()#绘制垂直投影img_white=np.ones(shape=(rows,cols),dtype=np.uint8)*255for 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)

运行程序,垂直投影图像如下图所示:

分割的单一字符如下图:

单个数字已经正确分割出来了。

文本分割之垂直投影法基于OpenCV(python)的实现相关推荐

  1. 文本分割之水平投影法基于OpenCV(python)版实现

    对于如下一张图片,如何将文本区域分割成一行一行的了? 在文本分割领域中有一种很优秀的算法:投影法,包括水平投影法和垂直投影法.本文主要讲述水平投影法,水平投影法可以理解为一束光线从图像的左侧向右边进行 ...

  2. 垂直投影法分割验证码

    垂直投影法分割验证码 背景: 在在上一篇的文章中,我们获得了能够破解验证码的完整的步骤的程序,虽然很简单,但是整体的框架已经设计完毕,接下来只要对其中的算法进行改进即可. 老规矩,先附上缺的上一次的链 ...

  3. 基于 OpenCV + Python 的人脸识别上课签到系统

    目录 前言 安装第三方库 第一步:采集人脸图像 (1)修改姓名学号 (2)运行capture_face.py (3)采集人脸图像 (4)查看采集到的人脸图像 第二步:训练模型 第三步:识别签到 (1) ...

  4. python字符分割垂直投影法_Python实现投影法分割图像示例(一)

    Python实现投影法分割图像示例(一) 发布时间:2020-01-26 21:14 来源:互联网 当前栏目:web技术类 投影法多用于图像的阈值分割.闲话不多说,现用Python实现. 上代码. i ...

  5. c#垂直投影法_投影学

    投影学 题解:本文命名<投影学>,是由于本文讨论投影的一些最基础的问题. 1 投影法 1.1投影的基本概念 投影,是一种通过降维的方法在平面上表示空间形体的办法.在工程上,投影是一种光线照 ...

  6. 投影法字符分割matlab,利用投影法进行字符分割

    1.概述 字符分割有很多方法,但并不是每一种方法是万能的,那么就需要根据自己的需要来分析.例如:我现在项目的需求是将一串编号给切分开来.查了网上的资料和文献,大致适合项目的有两种方法:投影分割法和连通 ...

  7. c#垂直投影法_设关系模式R(S#,C#,GRADE,TNAME,TADDR),其属性分别表示学生学号、选修课的编号、成绩、任课教师姓名、教师地址等意义。...

    [单选题]下列哪位学者发表了生物"中心法则": [单选题]关于扫描电镜不正确的说法是 [判断题]线性尺寸数字一般应注写在尺寸线上方或左方,不允许注写在尺寸线的中断处 [论述题]一. ...

  8. python使用垂直投影法进行字符串分割

    import cv2 import random import string# 1.读取图像,并把图像转换为灰度图像并显示 img = cv2.imread("D:\\picture\\te ...

  9. c#垂直投影法_【游戏开发】游戏后期特效#3:垂直雾(Vertical Fog)

    原标题:[游戏开发]游戏后期特效#3:垂直雾(Vertical Fog) 关注"indienova",挖掘独立游戏的更多乐趣 1开始之前 在之前的文章中有前辈提到大萌喵的写作风格的 ...

最新文章

  1. Apache服务器部署(2)
  2. angr学习笔记(1)
  3. RTX5 | 消息队列05 - 获取剩余空间,清空消息队列,删除消息队列
  4. python df head_在方法()中调用时,Pandas Df.head()不显示?
  5. 抽象类 VS 接口(1)
  6. 加速nginx: 开启gzip
  7. html链接抓取,【SEO工具】网页超链接提取工具(无语网站链接抓取器)
  8. Java方式实现上传微信素材
  9. OCR表格识别——(二)
  10. 十年前的知识产权战争 | 历史上的今天
  11. 谷胱甘肽修饰CdTe/CdS量子点(GSH-CdTe/CdSQDs);溶菌酶(Lyz)修饰Ag2S量子点(Lyz-Ag2S QDs)齐岳定制服务
  12. input输入邮箱使用正则限制正确格式的邮箱地址
  13. 初识Kodu开发软件---Kodu少儿编程第三天
  14. 聚焦:中国八大城市娶老婆的成本
  15. 联想小新 Pad Pro 12.6 怎么样
  16. 那些主流的淘宝客引流方法有哪些?
  17. RPC中Stub的理解
  18. 21.后台运行frp服务
  19. centos系统下安装mysql
  20. 5G C-V2X战役一触即发,广和通率先“上车”零碳商用快班车

热门文章

  1. 关于电机编码器的知识汇总,都在这里了!
  2. ❤️解决非线性回归问题的机器学习方法总结:多项式线性模型、广义线性(GAM)模型、回归树模型、支持向量回归(SVR)模型
  3. JAVA:实现一个CircularQueue循环队列算法(附完整源码)
  4. 计算机打字正确姿势,电脑快速打字方法教程
  5. threejs基础下:贴图资源加载与光照
  6. Pygame实战:家里的小孩数学算数能力很差嘛?别慌—这款“巧算24点小游戏”等你来玩,管用。
  7. Dell 730xd 加外部硬件 风扇变快
  8. kafka集群kafka-eagle安装
  9. pmp中ram和raci的区别_还有10天了,如何快速通过PMP考试?
  10. 用python实现过滤存在大部分空白背景的图片