☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░
一、黑帽简介
黑帽(Black Hat),又称“底帽”运算,其结果图像为闭运算图与原图像的差,即:dest=close(src,kernal)-src
由于闭运算是先膨胀和腐蚀,因此闭运算会去除图像中的小黑点,同时也会扩大图像前景轮廓的范围,实际上也就是放大了图像前景色区域,因此从闭运算图减去原图的运算结果突出了比原图轮廓周围的区域更暗的区域,此外黑帽还能得到图像内部的小孔,或者前景色中的小黑点。因此黑帽运算可以用于提取亮背景中的细小暗物体。
黑帽在OpenCV-Python的调用语法如下:morphologyEx(src, CV2.MORPH_BLACKHAT, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)
关于morphologyEx的介绍请参考《OpenCV-Python图像形态变换概述及morphologyEx函数介绍: https://blog.csdn.net/LaoYuanPython/article/details/109556425》。
二、利用黑帽去除暗水印
2.1、案例1:从地图中去除水印
2.1.1、案例原图
在如下图像(文件名:带水印中国地图.jpg):

在上述地图中存在两行比较淡的水印:“老猿Python”、“https://blog.csdn.net/LaoYuanPython”。
2.1.2、图像黑帽运算代码
import cv2
import numpy as np
from opencvPublic import print2DMatrix,preparePreviewImg,previewImgList,previewImg
def morphologyExTest(imgObj,imgTitle=''):
if isinstance(imgObj, str):
img = cv2.imread