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中assert用法实例分析
Apr 30 Python
python opencv实现运动检测
Jul 10 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python小程序实现刷票功能详解
Jul 17 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
解决echarts中饼图标签重叠的问题
May 16 Python
python -v 报错问题的解决方法
Sep 15 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
利用Python实现自动扫雷小脚本
Dec 17 Python
利用python绘制正态分布曲线
Jan 04 Python
python爬取微博评论的实例讲解
Jan 15 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
PHP 高手之路(三)
2006/10/09 PHP
用来给图片加水印的PHP类
2008/04/09 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
YII实现分页的方法
2014/07/09 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
基于vue 实现token验证的实例代码
2017/12/14 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
python和shell获取文本内容的方法
2018/06/05 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
python爬取音频下载的示例代码
2020/10/19 Python
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
婚育证明样本
2015/06/16 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript