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标准库urllib2的一些使用细节总结
Mar 16 Python
Python中的hypot()方法使用简介
May 18 Python
Django中使用第三方登录的示例代码
Aug 20 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
python协程之动态添加任务的方法
Feb 19 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
Python文件路径名的操作方法
Oct 30 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
Python必备技巧之字符数据操作详解
Mar 23 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 array操作10个小技巧分享
2011/06/23 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
2017/04/13 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
npm的lock机制解析
2019/06/20 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python编写生成验证码的脚本的教程
2015/05/04 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python subprocess库的使用详解
2018/10/26 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
几个Shell Script面试题
2014/04/18 面试题
大一自我鉴定范文
2013/12/27 职场文书
公积金单位接收函
2014/01/11 职场文书
铣工实训报告
2014/11/05 职场文书
调任通知
2015/04/21 职场文书
党员进社区活动总结
2015/05/07 职场文书
初中同学会致辞
2015/08/01 职场文书
热爱劳动主题班会
2015/08/14 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL