用膨胀腐蚀方法实现区域图像的提取

用膨胀腐蚀方法实现

(1)如下图片的表格线提取(2)如下图片的字母A提取

(1)图片的表格线提取

import cv2

import numpy as np

import matplotlib.pyplot as plt

#读入图片

alphabeta = cv2.imread("pic/alphabeta.png", 0)

#显示图片

plt.imshow(alphabeta)

#表格线提取

kernel = np.ones((1,100), np.uint8)

close1 = cv2.erode(cv2.dilate(alphabeta, kernel, iterations = 1), kernel, iterations = 1)

cv2.imshow("close", close1)

cv2.waitKey(0)

cv2.destroyAllWindows()

(2)图片的字母A提取

#1.通过图像阈值转换高亮标注字母

ret,close2 = cv2.threshold(alphabeta, 127, 255, cv2.THRESH_BINARY_INV)

cv2.imshow("close", close2)

cv2.waitKey(0)

cv2.destroyAllWindows()

#2.提取字母A大小的矩阵块作为核

kernel = close2[160:280,100:210];

print(type(kernel))

print(kernel.shape)

cv2.imshow("kernel", kernel)

cv2.waitKey(0)

cv2.destroyAllWindows()

#3.对字母表进行腐蚀操作

open1 = cv2.erode(close2, kernel, iterations = 1)

cv2.imshow("open", open1)

cv2.waitKey(0)

cv2.destroyAllWindows()

#4.对字母表进行开运算,先腐蚀,后膨胀

open1 = cv2.dilate(cv2.erode(close2, kernel, iterations = 1), kernel, iterations = 1)

cv2.imshow("open", open1)

cv2.waitKey(0)

cv2.destroyAllWindows()

#5.提取字母Aa大小的矩阵块作为核

kernel = close2[160:280,100:280];

print(type(kernel))

print(kernel.shape)

cv2.imshow("kernel", kernel)

cv2.waitKey(0)

cv2.destroyAllWindows()

open1 = cv2.dilate(cv2.erode(close2, kernel, iterations = 1), kernel, iterations = 1)

cv2.imshow("open", open1)

cv2.waitKey(0)

cv2.destroyAllWindows()

#腐蚀操作

close2 = cv2.erode(close2, kernel, iterations = 1)

#旋转内核

rows,cols = kernel.shape[:2]

M = cv2.getRotationMatrix2D((cols/2,rows/2),180,1) 

kernel = cv2.warpAffine(kernel,M,(cols,rows))

cv2.imshow("kernel", kernel)

cv2.waitKey(0)

cv2.destroyAllWindows()

#膨胀操作

open1 = cv2.dilate(close2, kernel, iterations = 1)

cv2.imshow("open", open1)

cv2.waitKey(0)

cv2.destroyAllWindows()

结论:进行腐蚀和膨胀的对象的像素值要大于零,对原图进行操作时得到的是全白的图片,开运算的到的目标区域会旋转180度,在进行腐蚀操作后需要对内核进行旋转180度得到原始目标区域图像

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值