精华内容
下载资源
问答
  • python 图片去水印

    千次阅读 2019-07-15 19:21:00
    import cv2import numpy as nppath = "test2.jpg"img = cv2.imread(path)height, width, depth = img.shape[0:3]# 图片二值化处理,把[240, 240, 240]~[255, 255, 255]以外的颜色变成0thresh = cv2.inRange(img, np....
    import cv2
    import numpy as np

    path = "test2.jpg"

    img = cv2.imread(path)
    height, width, depth = img.shape[0:3]

    # 图片二值化处理,把[240, 240, 240]~[255, 255, 255]以外的颜色变成0

    thresh = cv2.inRange(img, np.array([245, 245, 245]), np.array([255, 255, 255]))
    # 创建形状和尺寸的结构元素


    kernel = np.ones((3, 3), np.uint8)
    # 扩张待修复区域
    for i in range(2, 3):
    hi_mask = cv2.dilate(thresh, kernel, iterations=i+1)

    hi_mask[int(height*0.15):int(height*0.85), 0:width] = 0
    cv2.imwrite("mask2_%s.jpg" % (i + 1), hi_mask)
    specular = cv2.inpaint(img, hi_mask, 3, flags=cv2.INPAINT_TELEA)
    cv2.imwrite("result2_%s.jpg" % (i+1), specular)

    前提条件:水印文字是白色,出现在图片的上方或者下方

    转载于:https://www.cnblogs.com/niuniuc/p/11190870.html

    展开全文
  • opencv-python 图片去水印或文字及打马赛克 没有用基于像素的反色中和的方法 1. 基于选块的去除 通过鼠标选择图片中需要去除的水印,文字或…先看下效果不算完美,研究学习inpaint函数,及对图像的像素...

    opencv-python 图片去水印或文字及打马赛克

    没有用基于像素的反色中和的方法

    1. 基于选块的去除

    通过鼠标选择图片中需要去除的水印,文字或…先看下效果不算完美,研究学习inpaint函数,及对图像的像素操作。

    1. 使用了opencv中inpaint方法去除水印或文字
    2. 平移像素填充 方法去除水印或文字

    最后顺便做了个打马赛克效果测试。
    在这里插入图片描述
    代码:

    import cv2
    import numpy as np
    
    def onmouse(event, x, y, flags, param):  # 鼠标事件的回调函数
        global ix, iy, drawing, mode
        if event == cv2.EVENT_LBUTTONDOWN:  # 按下左键
            ix, iy = x, y  # 赋予按下时的鼠标,获取选中区域矩形左上角坐标
        elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:  # 当按下左键拖拽鼠标时
             tmp1=img.copy()
             cv2.rectangle(tmp1, (ix, iy), (x, y), (0, 0, 255), -2)
             cv2.imshow('Imageorg', tmp1)
        elif event == cv2.EVENT_LBUTTONUP:  # 当鼠标左键松开
                tmp1=img.copy()
                cv2.rectangle(img, (ix, iy), (x, y), (0, 0, 255), 2)   
                mosaic(img,ix, iy, x, y)#马赛克处理
                img_inpaint(img,ix, iy, x, y)# cv2.inpaint调用
                cleanself(img,ix, iy, x, y)#平移像素处理
        elif event == cv2.EVENT_MOUSEMOVE  and   flags != cv2.EVENT_FLAG_LBUTTON:#左键没有按下的情况下,鼠标移动 标出坐标
              temp=str(x)+','+str(y)
              tmp1=img.copy()
              cv2.putText(tmp1, temp, (x, y), cv2.FONT_HERSHEY_COMPLEX, 0.5, (0, 0, 0), 1)
              cv2.imshow("Imageorg", tmp1)
    def img_inpaint(img,ix, iy, x, y):
        height, width = org.shape[0:2]
        mask = np.zeros((height, width), np.uint8)
        cv2.rectangle(mask,(ix, iy), (x, y), (255, 255, 255), -1)
        img = cv2.inpaint(org, mask, 1.5, cv2.INPAINT_TELEA) #蒙版
        cv2.namedWindow("img_inpaint", 0)
        cv2.resizeWindow("img_inpaint", int(width / 2), int(height / 2))
        cv2.imshow('img_inpaint', img)
    
    def cleanself(img,ix, iy, x, y,nsize=1):
        height, width = org.shape[0:2]
        selected_image=org[iy:y,ix:x]
        dist = selected_image.copy()
        for i in range(iy,y):
          for j in range(ix,x):
            org[i,j][0]=org[i,j-nsize][0]
            org[i,j][1]=org[i,j-nsize][1]
            org[i,j][2]=org[i,j-nsize][2]
        selected_image=org[iy:y,ix:x]
        selected_image = cv2.GaussianBlur(selected_image,(15,15), 0,0)
        img = cv2.bilateralFilter(org,15, 30, 9)
        cv2.namedWindow("cleanself", 0)
        cv2.resizeWindow("cleanself", int(width / 2), int(height / 2))
        cv2.imshow('cleanself', img)
    
    
    def mosaic(img,ix, iy, x, y,nsize=5):
        height, width = mosaictmp.shape[0:2]
        roi=mosaictmp[iy:y,ix:x]
        rowsroi,colsroi= roi.shape[:2]
        dist = roi.copy()# 根据nsize划分马赛克方块 填充随机颜色
        for i in range(0,rowsroi,nsize):
          for j in range(0,colsroi,nsize):
            dist[i:i+nsize,j:j+nsize] = (np.random.randint(0,255),(np.random.randint(0,255)),np.random.randint(0,255))
        mosaictmp[iy:y,ix:x]=dist#替换roi区域为马赛克
        cv2.namedWindow("mosaic", 0)
        cv2.resizeWindow("mosaic", int(width / 2), int(height / 2))
        cv2.imshow('mosaic', mosaictmp)
        
    ix, iy = -1, -1
    if __name__ == '__main__':
        f_img = './data/q1.jpg'
        org = cv2.imread(f_img)
        height, width = org.shape[0:2]
        img = org.copy()
        tmp = org.copy()
        mosaictmp=org.copy()
        cv2.namedWindow("Imageorg", 0)
        cv2.resizeWindow("Imageorg", int(width / 2), int(height / 2))
        cv2.imshow("Imageorg", img)
        cv2.setMouseCallback("Imageorg", onmouse)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    

    2. 基于选块后HSV选色的局部水印去除

    1. 选中ROI区域 红色框标识
    2. 选择水印文字调节滑块hsv ,看mask是否显示
    3. 使用cv2.inpaint
      在这里插入图片描述
      重点代码
    def clean_byhsv(ix, iy, iix, iiy): # ix, iy, iix, iiy 为选择框的坐标
        thresh =setHsvvalue(0)#返回滑块选择的cv2.inRange后的mask 
        kernel = np.ones((3, 3), np.uint8)
        hi_mask = cv2.dilate(thresh, kernel, iterations=1)
        roi=watercleantmp[iy:iiy,ix:iix] #roi区域定位
        dist = roi.copy()
        cv2.imshow('ImagROI', roi)
        dist = cv2.inpaint(watercleantmp[iy:iiy,ix:iix], hi_mask[iy:iiy,ix:iix], 5, flags=cv2.INPAINT_TELEA)
        watercleantmp[iy:iiy,ix:iix]=dist#替换原图像中的水印部分
        cv2.namedWindow("dist", 0)
        cv2.imshow('dist', watercleantmp)
    
    展开全文
  • 平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印。这些就很影响我们的工作效率。今天我们就一起来,用Python + OpenCV三...1 图片去水印原...

    平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印。这些就很影响我们的工作效率。

    今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2、numpy。cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作;numpy这是一个强大的处理矩阵和维度运算的库。

    1

       

    图片去水印原理

    1、标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]以外的颜色处理为0;

    2、使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果;

    3、使用inpaint方法,把噪声的mask作为参数,推理并修复图片。

    2

       

    去掉右下角的水印步骤

    1、从源图片,截取右下角部分,另存为新图片;

    2、识别水印,颜色值为:[200, 200, 200]~[255, 255, 255]

    3、去掉水印,还原图片;

    4、把源图片、去掉水印的新图片,进行重叠合并;

    3

       

    代码实现

    import cv2import numpy as npfrom PIL import Imageimport osdir = os.getcwd()path = "1.jpg"newPath = "new.jpg"img=cv2.imread(path,1)hight,width,depth=img.shape[0:3]#截取cropped = img[int(hight*0.8):hight, int(width*0.7):width]  # 裁剪坐标为[y0:y1, x0:x1]cv2.imwrite(newPath, cropped)imgSY = cv2.imread(newPath,1)#图片二值化处理,把[200,200,200]-[250,250,250]以外的颜色变成0thresh = cv2.inRange(imgSY,np.array([200,200,200]),np.array([250,250,250]))#创建形状和尺寸的结构元素kernel = np.ones((3,3),np.uint8)#扩展待修复区域hi_mask = cv2.dilate(thresh,kernel,iterations=10)specular = cv2.inpaint(imgSY,hi_mask,5,flags=cv2.INPAINT_TELEA)cv2.imwrite(newPath, specular)#覆盖图片imgSY = Image.open(newPath)img = Image.open(path)img.paste(imgSY, (int(width*0.7),int(hight*0.8),width,hight))img.save(newPath)

    4

       

    效果对比

    b44d08583de24b40bc9105e8463bd5ae.png

    好了,今天就分享到这边,大家有什么想法,欢迎给我留言讨论。如果需要源代码与软件的,请在公众号回复【去水印】获取。

    5a596bd7475c20273a25a965703a7f54.png

    觉得有用的,点击下{在看}。

    展开全文
  • 平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉...图片去水印原理 1、标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img

    平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印。这些就很影响我们的工作效率。

    今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2、numpy。cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作;numpy这是一个强大的处理矩阵和维度运算的库。

    图片去水印原理

    1、标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]以外的颜色处理为0;
    2、使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果;
    3、使用inpaint方法,把噪声的mask作为参数,推理并修复图片。

    去掉右下角的水印步骤

    1、从源图片,截取右下角部分,另存为新图片;
    2、识别水印,颜色值为:[200, 200, 200]~[255, 255, 255]
    3、去掉水印,还原图片;
    4、把源图片、去掉水印的新图片,进行重叠合并;

    代码实现

    import cv2
    import numpy as np
    from PIL import Image
    import os
    
    dir = os.getcwd()
    path = "1.jpg"
    newPath = "new.jpg"
    img=cv2.imread(path,1)
    hight,width,depth=img.shape[0:3]
    
    #截取
    cropped = img[int(hight*0.8):hight, int(width*0.7):width]  # 裁剪坐标为[y0:y1, x0:x1]
    cv2.imwrite(newPath, cropped)
    imgSY = cv2.imread(newPath,1)
    
    #图片二值化处理,把[200,200,200]-[250,250,250]以外的颜色变成0
    thresh = cv2.inRange(imgSY,np.array([200,200,200]),np.array([250,250,250]))
    #创建形状和尺寸的结构元素
    kernel = np.ones((3,3),np.uint8)
    #扩展待修复区域
    hi_mask = cv2.dilate(thresh,kernel,iterations=10)
    specular = cv2.inpaint(imgSY,hi_mask,5,flags=cv2.INPAINT_TELEA)
    cv2.imwrite(newPath, specular)
    
    #覆盖图片
    imgSY = Image.open(newPath)
    img = Image.open(path)
    img.paste(imgSY, (int(width*0.7),int(hight*0.8),width,hight))
    img.save(newPath)
    

    效果对比

    效果对比

    好了,今天就分享到这边,大家有什么想法,欢迎给我留言讨论。如果需要源代码与软件的,我已放在在公众号。
    在这里插入图片描述

    展开全文
  • 前言 ...今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2、numpy。cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作;numpy这是一个强大的处理矩阵和维度
  • 平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印。这样就很影响我们的工作效率。今天我们就一起来,用...1、图片去水印原理1、标定噪声...
  • 前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们...今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2、numpy。cv2是基于...
  • python + opencv微博图片去水印

    千次阅读 2019-06-01 17:01:27
    python 3.6.5 openCV 4.0.1 基本思路: 提取ROI(感兴趣的区域,即水印所在的区域) 为水印创建蒙层 借助水印蒙层对图片进行修补 **提取ROI:**获取水印在图片中所在的区域,即像素值范围。可以有很多工具获得,我...
  • 图片去水印

    2019-07-23 21:09:45
    Python去除图片水印背景核心代码思路与代码解析
  • 基于Python实现网页版去复杂图片水印 Python可以用OpenCV去除图片水印,但只针对简单图片,如何对于复杂图片 基于Flask框架实现网页上传图片,执行效果: 代码解析: (1)Flask框架搭建 新建qushuiyin.py...
  • 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢?答案是肯定的,...
  • Python可以用OpenCV去除图片水印,但如何结合web框架去实现网页版去水印,带着这样的疑问,我搜索研究了一下,发现是完全可以实现的,而且考虑到部署服务器,也是可以实现的,这里就不详细说明了。 基于Flask框架...
  • 环境配置: python版本: 3.6.0 编辑器: pycharm ps: 每一步都有代码和排版截图,方便学习 代码目录结构 切记刚开始学习的时候,目录结构保持和源码一致 第一步:导入相关的python包# encoding:utf-8import osfrom...
  • 再转成图片,作为程序的输入,运行结果: 左边有水印,右边是经过python去除了水印 注意: 仅对浅色的黑白/彩色水印有效,如WPS水印,课程水印等 最后,给一点点学习建议,不懂的时候,先弄明白它的功能以及会使用它...
  • 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢? 答案是肯定的...
  • 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然...
  • 写在前面 近期好多网友私信我,问我编程该怎么学习、怎么... 如果有疑问想获取源码(其实代码都在上面),可以关注后,在后台私信我,回复:python去水印。 我把源码发你。最后,感谢大家的阅读,祝大家工作生活愉快!
  • pdf图片去水印 # 由于版权原因使用sift算法,需要安装opencv3.4以下版本 pip install opencv-python import cv2 import numpy as np import os import glob from matplotlib import pyplot as plt class WaterMark...
  • Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片 其实没太大用,就是方便一些,因为现在各个平台之间的图片都不能共享,比如说在 CSDN 不能用简书的图片,在博客园不能用 CSDN 的图片。 当前想到...
  • 再转成图片,作为程序的输入,运行结果: 左边有水印,右边是经过python去除了水印 注意: 仅对浅色的黑白/彩色水印有效,如WPS水印,课程水印等 最后,给一点点学习建议,不懂的时候,先弄明白它的功能以及会使用它...
  • 1. tmall 工商图片去除水印。 2. 工商图片识别公司名称。 环境概述: mac / Centos Python3.6.5 Tesseract 4.0.0 源码如下: https://github.com/Carmenliukang/Image_watermark_removal # !/usr/bin/...
  • 图像修复是图像保存和图像恢复的一种形式,其历史可以追溯到1700年代,当时意大利威尼斯的公共图片修复总监彼得·爱德华兹(Pietro Edwards)应用这种科学方法来修复和保存著名作品(资料来源)。 图像修复技术显着...
  • Product去水印Python

    2020-12-06 23:12:03
    Product去水印 使用到的库: from os.path import splitext from itertools import product from PIL import Image 此图为原图: fn = '1.png' #图片名 im = Image.open(fn) width, height = im.size for ...
  • python实现,通过hsv颜色判断水印位置,并通过cv2去水印。 glob不支持中文目录和包含[]的路径,所以图片要放在全英文目录中。 py文件放在jpg文件目录,去水印后的图片放在nowatermark目录。

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

python图片去水印

python 订阅