Python+OpenCV图像处理(第4课---形态学操作)

图像腐蚀

erode()
主要针对二值图像,前景白色。 用卷积核扫描整张图像每个像素,如果卷积核覆盖区域都是白色点就保持白色,否则变成黑色。
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2
import numpy as np

img = cv2.imread("C:\\imgs\\erode.bmp", cv2.IMREAD_UNCHANGED)

kernel = np.ones((5, 5), np.uint8)

result = cv2.erode(img, kernel, iterations=10)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

图像膨胀

dilate()
图像膨胀是图像腐蚀的逆操作,也是主要针对二值图像,前景白色。用卷积核扫描整张图像每个像素,如果卷积核覆盖区域含有白色点整个卷积核都变成白色,否则保持黑色。
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2
import numpy as np

img = cv2.imread("C:\\imgs\\dilation.bmp", cv2.IMREAD_UNCHANGED)

kernel = np.ones((5, 5), np.uint8)

result = cv2.dilate(img, kernel, iterations=6)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

开运算

morphologyEx(),op参数传入对应的开运算标志

先腐蚀+再膨胀
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2
import numpy as np

img = cv2.imread("C:\\imgs\\erode.bmp", cv2.IMREAD_UNCHANGED)

kernel = np.ones((10, 10), np.uint8)

result = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

闭运算

morphologyEx(),op参数传入对应的闭运算标志

先膨胀+再腐蚀
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2
import numpy as np

img = cv2.imread("C:\\imgs\\closing.bmp", cv2.IMREAD_UNCHANGED)

kernel = np.ones((15, 15), np.uint8)

result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

梯度运算

morphologyEx(),op参数传入对应的梯度运算标志
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2
import numpy as np

img = cv2.imread("C:\\imgs\\gradient.bmp", cv2.IMREAD_UNCHANGED)

kernel = np.ones((3, 3), np.uint8)

result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

顶帽运算

morphologyEx(),op参数传入对应的顶帽运算标志
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2
import numpy as np

img = cv2.imread("C:\\imgs\\tophat.bmp", cv2.IMREAD_UNCHANGED)

kernel = np.ones((5, 5), np.uint8)

result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

黑帽运算

morphologyEx(),op参数传入对应的黑帽运算标志

在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2
import numpy as np

img = cv2.imread("C:\\imgs\\closing.bmp", cv2.IMREAD_UNCHANGED)

kernel = np.ones((10, 10), np.uint8)

result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

特别说明

本文参考网易云课堂《Python+OpenCV图像处理》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值