给定一系列带有水印的照片,我想隔离水印,并生成一个遮罩
我正在使用Python和numpy
我已将这些图片相互叠加:
def compare_n_img(array_of_img_paths):
img_float_array = []
for path in array_of_img_paths:
img_float_array.append(load_img_as_float(path))
additionF = sum(img_float_array)/len(img_float_array)
addition = additionF.astype('uint8')
return addition
这个,转换成灰度,给了我这个composite image
水印在该合成图中清晰可见。对于人类来说,这很容易追踪
我想要的结果是一个白色图像,水印的形状用黑色填充。因此,如果我用遮罩覆盖一幅带水印的图像,水印将被完全覆盖
我尝试在合成图像上使用边缘检测和阈值。但是我还没有找到一种方法来通过编程隔离水印内容。更不用说创建一个清晰的遮罩了
如果可能的话,我想用纯numpy或者cv2来做这个
在使用canny边缘检测器之前,可以尝试模糊图像。由于检测到的边缘太薄,膨胀和侵蚀的迭代将解决问题
在检测到边缘后,背景中很可能存在大量噪声,因此过滤出具有小面积的轮廓将是有效的
以下是可能的结果:
输出:
相关问题 更多 >
编程相关推荐