OpenCV 图像顶帽运算

顶帽运算也叫礼帽运算
操作原理:图像的闭运算与原图像做差
功能:可以用来分离比邻近点亮一些的斑点


简要的概括:什么是闭运算,有什么功能?
闭运算是图像先膨胀后腐蚀膨胀后腐蚀的过程,它可以用来消除小型黑洞(黑色区域)

import cv2
import numpy as np

image = cv2.imread("other.png")
image = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR)
Kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 定义一个卷积核
# 进行闭运算
closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, Kernel)
cv2.imshow("closing",closing)
cv2.waitKey(0)

OpenCV 图像顶帽运算_第1张图片


礼帽运算

按照原理进行操作

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

import cv2
image = cv2.imread("other.png")
image = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR)
Kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 定义一个卷积核
# 进行闭运算
closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, Kernel)
tophat = closing-image 
cv2.imshow("tophat",tophat)
cv2.waitKey(0)

使用cv2.MORPH_TOPHAT进行礼帽操作

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

import cv2
image = cv2.imread("other.png")
image = cv2.cvtColor(image, cv2.COLOR_BGRA2BGR)
Kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 定义一个卷积核
# 进行闭运算
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, Kernel)
cv2.imshow("tophat",tophat)
cv2.waitKey(0)

OpenCV 图像顶帽运算_第2张图片


总结:
顶帽运算直接使用cv2.MORPH_TOPHAT进行操作比较好。
从原理出发得到的结果精度不够(可能图片的减法使用的不同),更改卷积的核的大小读图片的精度有影响,但是如果能得到从原理出发的结果可能性不大。

你可能感兴趣的:(计算机视觉)