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获取单个程序CPU使用情况趋势图
Mar 10 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
Python importlib动态导入模块实现代码
Apr 16 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
python 实现体质指数BMI计算
May 26 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
用PHP连接MySQL代码的参数说明
2008/06/07 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
vue项目中微信登录的实现操作
2020/09/08 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python常见数据结构详解
2014/07/24 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
python使用udp实现聊天器功能
2018/12/10 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
django中间键重定向实例方法
2019/11/10 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
详解Python模块化编程与装饰器
2021/01/16 Python
南京软件公司的.net程序员笔试题
2014/08/31 面试题
行政助理的岗位职责
2014/02/18 职场文书
政风行风整改报告
2014/11/06 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript