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查找第k小元素代码分享
Dec 18 Python
python简单实现基于SSL的IRC bot实例
Jun 15 Python
bpython 功能强大的Python shell
Feb 16 Python
浅谈Python数据类型之间的转换
Jun 08 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
Python sys模块常用方法解析
Feb 20 Python
通过Python实现一个简单的html页面
May 16 Python
详解pycharm配置python解释器的问题
Oct 15 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
python 常用的异步框架汇总整理
Jun 18 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中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
JS解析XML的实现代码
2009/11/12 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
使用Python对SQLite数据库操作
2017/04/06 Python
单链表反转python实现代码示例
2018/02/08 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
简短证婚人证婚词
2014/01/09 职场文书
高三高考决心书
2014/03/11 职场文书
法院信息化建设方案
2014/05/21 职场文书
绿色出行口号
2014/06/18 职场文书
植物生产学专业求职信
2014/08/08 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
Python初学者必备的文件读写指南
2021/06/23 Python
Python实现制作销售数据可视化看板详解
2021/11/27 Python