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设计模式之观察者模式实例
Apr 26 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
Python输出带颜色的字符串实例
Oct 10 Python
Python中的id()函数指的什么
Oct 17 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
Python命令行解析模块详解
Feb 01 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
Python 文字识别
May 11 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
PHP 验证登陆类分享
2015/03/13 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
js使用心得分享
2015/01/13 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
node crawler如何添加promise支持
2020/02/01 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
python pdb调试方法分享
2014/01/21 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python实现微信机器人的方法
2019/09/06 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
关于python 跨域处理方式详解
2020/03/28 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
法律专业自我鉴定
2013/10/03 职场文书
应届大学生求职的自我评价
2013/11/17 职场文书
主管会计岗位职责
2014/03/13 职场文书
电力安全事故反思
2014/04/27 职场文书
公司年夜饭通知
2015/04/25 职场文书