Python实现投影法分割图像示例(一)

 更新时间:2020年01月17日 14:41:52   作者:TIME_LEAF  
今天小编就为大家分享一篇Python实现投影法分割图像示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

投影法多用于图像的阈值分割。闲话不多说,现用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变量与内存用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • python绘制无向图度分布曲线示例

    python绘制无向图度分布曲线示例

    今天小编就为大家分享一篇python绘制无向图度分布曲线示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析

    Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析

    这篇文章主要介绍了Python上下文管理器类和上下文管理器装饰器contextmanager用法,结合实例形式分析了上下文管理器类定义、使用、sqlalchemy实现数据库的自动提交和回滚相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • python多进程共享Array问题

    python多进程共享Array问题

    multiprocessing库提供了Array类,允许在多个进程间共享数组,Array在共享内存中创建,各进程可直接访问和修改其元素,实现数据同步,Array支持多种数据类型,可选锁定参数以保证数据安全
    2024-09-09
  • tornado捕获和处理404错误的方法

    tornado捕获和处理404错误的方法

    这篇文章主要介绍了tornado捕获和处理404错误的方法,方法很简单,只要覆写write_error方法就可以,看下面的代码就明白了
    2014-02-02
  • python实现电脑自动关机

    python实现电脑自动关机

    这篇文章主要为大家详细介绍了如何利用python实现电脑自动关机,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决

    Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决

    这篇文章主要介绍了Matlab中的mat数据转成python中使用的npy数据遇到的坑及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • pandas Dataframe实现批量修改值的方法

    pandas Dataframe实现批量修改值的方法

    这篇文章主要介绍了pandas Dataframe实现批量修改值的方法,在使用dataframe的时候 有时候会碰到需要批量修改数据的时候,下面文章主要说明两种情况使用iloc对某几行某几列进行全部修该和对数据进行判定后,相互+/-/*某个数,使用内置函数,需要的朋友可以参考一下
    2022-06-06
  • Python with语句用法原理详解

    Python with语句用法原理详解

    这篇文章主要介绍了Python with语句用法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • python中设置超时跳过,超时退出的方式

    python中设置超时跳过,超时退出的方式

    今天小编就为大家分享一篇python中设置超时跳过,超时退出的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论