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 02 Python
图文详解WinPE下安装Python
May 17 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
Python中max函数用于二维列表的实例
Apr 03 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
mac安装pytorch及系统的numpy更新方法
Jul 26 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
使用python实现学生信息管理系统
Feb 25 Python
使用python向MongoDB插入时间字段的操作
May 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
在Python中使用成员运算符的示例
2015/05/13 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
管理科学大学生求职信
2013/11/13 职场文书
家长给孩子的评语
2014/01/30 职场文书
学生感冒英文请假条
2014/02/04 职场文书
教师党性分析材料
2014/02/04 职场文书
法律系毕业生自荐信范文
2014/03/27 职场文书
投资意向书范本
2014/04/01 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python