python去水印保存图片,python数字水印

  python去水印保存图片,python数字水印

  OpenCV基金会

  OpenCV(开源计算机视觉库)是一个跨平台的计算机视觉库,实现了图像处理和计算机视觉中的许多通用算法。

  环境建设

  #python沙盒环境

  虚拟opencvenv

  source opencvenv/bin/activate

  安装加密NDG-HTTPS客户端#一些python版本所需的几个兼容包

  pip numpy # opencv的依赖性

  #我在这里直接pip安装pyopencv失败。

  #对于其他方法,直接从yum包中复制opencv的python包装器

  sudo yum安装opencv-python

  CP/usr/lib 64/python 2.7/site-packages/cv * opencv _ test/cvenv/lib 64/python 2.7/site-packages/

  opencv的常见操作

  # -*-编码:utf-8 -*-

  导入cv2

  #以矩阵形式读取的图像是一个三维列表,每个维度分别代表一行、一列和一个像素,BGR三个颜色通道依次在像素维度列表中。

  img=cv2.imread(test.jpg )

  Print.shape #使用numpy的shape方法显示图像矩阵的三维尺寸信息,例如:(533,800,3)

  Img2=img.copy() #复制图像

  2.cvimwrite (save.jpg ,img2) # save

  基于OpenCV的两种水印方案

  1.基于修复方法(在线方法,处理质量低)

  算法原理:基于Telea在2004年提出的快速移动修复算法(FMM算法),首先对待修复区域边缘的像素进行处理,然后逐层向内推进,直到所有像素修复完毕。

  处理方法:ui人员会在一个黑色的背景上,同样的位置用白色的水印做一个水印蒙版(只需要一个通道的灰度图像),然后用inpaint的方法对原图进行处理。在具体使用时,可以放大水印区域,这样处理效果会更好。

  # -*-编码:utf-8 -*-

  导入cv2

  Src=cv2.imread(src.jpg) #默认颜色映射(IMREAD_COLOR)用于读入原始图像。

  Mask=cv2.imread (mask.jpg ,cv2。im read _ gray)# gray scale(im read _ gray)来读取水印蒙版图像。

  # parameter:目标修复映像;掩模图(定位修复区域);选择邻域半径;修复算法(包括INPAINT_TELEA/INPAINT_NS,前者效果更好)

  dst=cv2.inpaint(src,mask,3,cv2。INPAINT_TELEA)

  cv2.imwrite(result.jpg ,dst)

  效果演示

  图src:

  面具:

  INPAINT_TELEA算法处理效果;

  INPAINT_NS算法的处理效果;

  如果仔细比较的话,INPAINT_TELEA算法会让水印隐藏效果稍微好一点。

  2.基于像素的彩色反转中和(高处理质量)

  参考自ps水印的原理,原始图像的水印被白色背景上的反色水印图像中和。

  # -*-编码:utf-8 -*-

  导入cv2

  进口数量

  src=cv2.imread(src.jpg )

  mask=cv2.imread(mask.png )

  Save=numpy.zeros (src.shape,numpy.uint8) #创建一个空图像进行保存。

  对于范围内的行(src.shape[0]):

  对于范围内的列(src.shape[1]):

  对于范围内的通道(src.shape[2]):

  if mask[row,col,channel]=0:

  val=0

  否则:

  reverse _ val=255-src[行、列、通道]

  val=255-reverse _ val * 256/mask[行、列、通道]

  如果val 0: val=0

  保存[行,列,通道]=val

  cv2.imwrite(result.jpg ,保存)

  图src:

  彩色水印图像:

  输出渲染:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: