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文件及目录操作实例详解
Jun 04 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
Python2中文处理纪要的实现方法
Mar 10 Python
python url 参数修改方法
Dec 26 Python
Python实现的文轩网爬虫完整示例
May 16 Python
selenium+python环境配置教程详解
May 28 Python
如何使用python把ppt转换成pdf
Jun 29 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
python 实现音频叠加的示例
Oct 29 Python
实例详解Python的进程,线程和协程
Mar 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
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
Node.js文件操作详解
2014/08/16 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
python调用java的Webservice示例
2014/03/10 Python
python实现二叉树的遍历
2017/12/11 Python
python编程嵌套函数实例代码
2018/02/11 Python
python中实现字符串翻转的方法
2018/07/11 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python代码需要缩进吗
2020/07/01 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
Linux如何压缩可执行文件
2013/10/21 面试题
J2EE包括哪些技术
2016/11/25 面试题
九年级体育教学反思
2014/01/23 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
年终总结会主持词
2014/03/25 职场文书
村党支部书记承诺书
2014/05/29 职场文书
英语教学课后反思
2016/02/15 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android