python实现腐蚀膨胀

  • 腐蚀膨胀是形态学的基本处理方法
  • 开运算:先腐蚀后膨胀,可消除细小物体或断开两个区域间的细小连接处。
  • 闭运算:先膨胀后腐蚀,填充物体内细小空洞,连接邻近物体和平滑边界。

代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt

def erode_demo(pic):
    #gray = cv2.cvtColor(pic,cv2.COLOR_RGB2GRAY) # 原图片类型转换为灰度图像
    #ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV)
    #cv2.imshow("binary", binary)
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (6, 6))
    dst = cv2.erode(pic, kernel)
    return dst

def dilate_demo(binary):
    #gray = cv2.cvtColor(pic,cv2.COLOR_RGB2GRAY)
    #ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV)
    #cv2.imshow("binary", binary)
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (6, 6))
    dst = cv2.dilate(binary, kernel)
    return dst


img = cv2.imread('1.png')
img1 = '1.png'
src = cv2.imread(img1, cv2.IMREAD_UNCHANGED)
gray1 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

imageVar = cv2.Laplacian(gray1, cv2.CV_64F).var()


a = 3
O = float(a) * img
# 进行数据截断,大于255 的值要截断为255
O[0 > 255] = 255
# 数据类型转换
O = np.round(O)
# uint8类型
O = O.astype(np.uint8)
# 显示原图和线性变换后的效果
#cv2.imshow("I", I)
cv2.imshow("O", O)

result = erode_demo(src)
result2 = dilate_demo(src)
cv2.imshow('ori',img)
cv2.imshow('result',result)
cv2.imshow('result2',result2)
cv2.imshow('imageVar',imageVar)
cv2.waitKey(0)
cv2.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值