Python实现投影法分割图像示例(一)


Posted in Python onJanuary 17, 2020

投影法多用于图像的阈值分割。闲话不多说,现用Python实现。

上代码。

import cv2
import numpy
img = cv2.imread('D:/0.jpg', cv2.COLOR_BGR2GRAY)
height, width = img.shape[:2]
#resized = cv2.resize(img, (3*width,3*height), interpolation=cv2.INTER_CUBIC)
#二值化
(_, thresh) = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY) 
#cv2.imshow('thresh', thresh)
#扩大黑色面积,使效果更明显
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))#形态学处理,定义矩形结构
closed = cv2.erode(thresh, None, iterations = 5)
cv2.imshow('erode',closed)
height, width = closed.shape[:2]
v = [0]*width
z = [0]*height
a = 0
#垂直投影
#统计并存储每一列的黑点数
for x in range(0, width):    
 for y in range(0, height):
  if closed[y,x][0] == 0:
   a = a + 1
  else :
   continue
 v[x] = a
 a = 0
l = len(v)
#print l
#print width
#创建空白图片,绘制垂直投影图
emptyImage = numpy.zeros((height, width, 3), numpy.uint8) 
for x in range(0,width):
 for y in range(0, v[x]):
  b = (255,255,255)
  emptyImage[y,x] = b
cv2.imshow('chuizhi', emptyImage)
#水平投影
#统计每一行的黑点数
a = 0
emptyImage1 = numpy.zeros((height, width, 3), numpy.uint8) 
for y in range(0, height):
 for x in range(0, width):
  if closed[y,x][0] == 0:
   a = a + 1
  else :
   continue
 z[y] = a
 a = 0
l = len(z)
#print l
#print height
#绘制水平投影图
for y in range(0,height):
 for x in range(0, z[y]):
  b = (255,255,255)
  emptyImage1[y,x] = b
cv2.imshow('shuipin', emptyImage1)
cv2.waitKey(0)

原图

Python实现投影法分割图像示例(一)

垂直投影图

Python实现投影法分割图像示例(一)

水平投影图

Python实现投影法分割图像示例(一)

由这两图可以确定我们所需的分割点,从而可以进行下一步的文本分割。这将在下一篇博客中实现。

以上这篇Python实现投影法分割图像示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现文件名批量替换和内容替换
Mar 20 Python
Python中使用ConfigParser解析ini配置文件实例
Aug 30 Python
python实现ping的方法
Jul 06 Python
python线程池(threadpool)模块使用笔记详解
Nov 17 Python
python3 中文乱码与默认编码格式设定方法
Oct 31 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
通过实例学习Python Excel操作
Jan 06 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
Python文件操作及内置函数flush原理解析
Oct 13 Python
np.dot()函数的用法详解
Jan 17 #Python
python使用numpy实现直方图反向投影示例
Jan 17 #Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 #Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 #Python
Python autoescape标签用法解析
Jan 17 #Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 #Python
Python with标签使用方法解析
Jan 17 #Python
You might like
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
PHP EOT定界符的使用详解
2008/09/30 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
python通过链接抓取网站详解
2019/11/20 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
Internet主要有哪些网络群组成
2015/12/24 面试题
小学六一儿童节活动方案
2014/08/27 职场文书
工作岗位职责范本
2015/02/15 职场文书
2015入党自传书范文
2015/06/26 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL