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参数传入对应的梯度运算标志
在这里插入图片描述

扫描二维码关注公众号,回复: 10830501 查看本文章
# -*- 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图像处理》

发布了323 篇原创文章 · 获赞 193 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/ccnuacmhdu/article/details/103817597