python 图像分割实例_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实现投影法分割图像示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值