使用python实现简单去水印功能

在做视频或者图片处理的时候,我们经常会遇到存在水印的情况,或者我们需要去除图片的某一个部分,这时候我们就需要想办法去除不需要的这一部分。下面这个工具能够控制鼠标将图片上的任意部分改变颜色,从而达到去除水印的效果,这里我们默认修改为白色。

一、准备工作

1、CV2库

2、PIL库

二、源码

import cv2 # 导入相关库
from PIL import Image

global img
global point1, point2

def on_mouse(event, x, y, flags, param):
global img, point1, point2
img2 = img.copy()
if event == cv2.EVENT_LBUTTONDOWN: # 左键点击
point1 = (x, y)
cv2.circle(img2, point1, 10, (255, 255, 255), 2)
cv2.imshow('image', img2)
elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON): # 按住左键拖曳
cv2.rectangle(img2, point1, (x, y), (255, 255, 255), 2)
cv2.imshow('image', img2)
elif event == cv2.EVENT_LBUTTONUP: # 左键释放
point2 = (x, y)
cv2.rectangle(img2, point1, point2, (255, 255, 255), 2)
cv2.imshow('image', img2)
min_x = min(point1[0], point2[0])
min_y = min(point1[1], point2[1])
width = abs(point1[0] - point2[0])
height = abs(point1[1] - point2[1])
cut_img = img[min_y:min_y + height, min_x:min_x + width]
cv2.imwrite('first.png',cut_img)

将裁剪出来的图片变为白色

def test2():
i = 1
j = 1
img = Image.open("first.png") # 读取系统的内照片
print(img.size) # 打印图片大小
print(img.getpixel((4, 4)))
width = img.size[0] # 长度
height = img.size[1] # 宽度
for i in range(0, width): # 遍历所有长度的点
for j in range(0, height): # 遍历所有宽度的点
data = (img.getpixel((i, j))) # 打印该图片的所有点
print(data) # 打印每个像素点的颜色RGBA的值(r,g,b,alpha)
print(data[0]) # 打印RGBA的r值
if (data[0] != 255 and data[1] != 255 and data[2] != 255): # RGBA的r值大于170,并且g值大于170,并且b值大于170
img.putpixel((i, j), (255, 255, 255, 255)) # 则这些像素点的颜色改成大红色
img = img.convert("RGB") # 把图片强制转成RGB
img.save("mid.png")

def testMain():
img = Image.open('/home/gtwang/1000000.png')
img2 = Image.open('mid.png')

layer = Image.new('RGBA', img.size, (255, 255, 255, 0))
layer.paste(img2, (point1))

img_after = Image.composite(layer, img, layer)
img_after.show()
img_after.save('output.png')

def main():
global img
img = cv2.imread('input.png')
cv2.namedWindow('image')
cv2.setMouseCallback('image', on_mouse)
cv2.imshow('image', img)
cv2.waitKey(0)

if __name__ == '__main__':
main()
test2()
testMain()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python编程OpenCV和Numpy图像处理库实现图片去水印

    目录 OpenCV + Numpy 函数简介 色彩转换 PIL + itertools 大家好,我是小五 前一阵给大家分享了,Python如何给图片加水印.评论区就有小伙伴问,可不可使用Python去除图片水印的方法呢? 这个肯定有啊,不过由于图片水印的种类有很多,今天我们先讲最简单的一种. 即上图中的①类水印,这种水印存在白色背景上的文档里,水印是灰色,需要保留的文字是黑色. 这种通常可以进行简单的亮度/对比度转换,直到水印消失并降低亮度以进行补偿. 参考别人的方法,我发现可以用多种方法去除水

  • python 实现图片修复(可用于去水印)

    在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢? 答案是肯定的,依然是被我们用了无数次的OpenCV这款优秀的框架. 效果预览 图片修复原理 那OpenCV究竟是怎么实现的,简单的来说就是开发者标定噪声的特征,在使用噪声周围的颜色特征推理出应该修复的图片的颜色,从而实现图片修复的. 程序实现解析 标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进

  • Python批量图片去水印的方法

    ​平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印.这些就很影响我们的工作效率. 今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2.numpy.cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作:numpy这是一个强大的处理矩阵和维度运算的库. 图片去水印原理 1.标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRa

  • python tkinter实现下载进度条及抖音视频去水印原理

    tkinter下载进度条 利用python爬取网站数据进行下载时,显示下载进度 # 设置下载进度条 tk.Label(window, text='下载进度:').place(x=40, y=80) canvas = tk.Canvas(window, width=600, height=16, bg="white") canvas.place(x=20, y=90) # 下载按钮函数 def usr_download(): response = session.get(url_str,

  • python为图片和PDF去水印详解

    目录 安装模块 获取图片的 RGB 图片去水印 PDF 去水印 图片转为 pdf 总结 网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读.比如下面的图片就是在 pdf 文件上截取出来的. 安装模块 PIL:Python Imaging Library 是 python 上非常强大的图像处理标准库,但是只能支持 python 2.7,于是就有志愿者在 PIL 的基础上创建了支持 python 3的 pillow,并加入了一些新的特性. pip install pillow pymupdf

  • 使用python实现简单去水印功能

    在做视频或者图片处理的时候,我们经常会遇到存在水印的情况,或者我们需要去除图片的某一个部分,这时候我们就需要想办法去除不需要的这一部分.下面这个工具能够控制鼠标将图片上的任意部分改变颜色,从而达到去除水印的效果,这里我们默认修改为白色. 一.准备工作 1.CV2库 2.PIL库 二.源码 import cv2 # 导入相关库 from PIL import Image global img global point1, point2 def on_mouse(event, x, y, flags

  • python制作简单计算器功能

    本文实例为大家分享了python实现简单计算器功能的具体代码,供大家参考,具体内容如下 效果如图: 主要思路: 用列表保存按下的键,按下等于,转换为字符串,利用内置函数eval计算字符串的值. 代码: from tkinter import *   W = 280 #窗口宽度 H = 460 #窗口高度 process_H = 110 #显示运算过程的标签高度 result_H = 50   #显示运算结果的标签高度 msFont = '微软雅黑' #字体 fontSize = 20 #字体大小

  • python实现简单倒计时功能

    使用python实现简单倒计时exe,供大家参考,具体内容如下 使用tkinter制作界面实现倒计时功能. 使用time.sleep(1)实现 秒级 倒计时 使用线程避免界面卡死 在线程的循环中检测全局标志位,保证计时线程的重置.以及退出 使用pyinstaller -F file.py -w 生成exe文件,-w表示隐藏控制台,-F表示生成单文件 代码如下: #!/usr/bin/python3.8 # -*- coding: utf-8 -*- # @Time : 2021/4/19 14:

  • python实现简单爬虫功能的示例

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度.好吧-!其实你很厉害的,右键查看页面源代码. 我们可以通过python 来实现这样一个简单的爬虫功能,把我们想要的代码爬取到本地.下面就看看如何使用python来实现这样一个功能. 一,获取整个页面数据 首先我们

  • python实现简单聊天功能

    python的功能确实强大,几行代码就能实现聊天功能 ,供大家参考,具体内容如下 服务端: from socket import socket def main(): #创建套接字对象并指定使用哪种传输服务 socket()括号不传递参数默认是tcpipv4 server = socket() #绑定ip地址和端口(这样可以区分不同的服务) 端口可以自己指定建议使用1024以后的端口 server.bind(('10.7.152.123',5650)) # 开启监听 ----监听客户端连接到服务

  • 使用Python实现简单的服务器功能

    socket接口是实际上是操作系统提供的系统调用.socket的使用并不局限于Python语言,你可以用C或者Java来写出同样的socket服务器,而所有语言使用socket的方式都类似(Apache就是使用C实现的服务器) Web框架就是提前写好了服务器.不能跨语言的使用框架.框架的好处在于帮你处理了一些细节,从而实现快速开发,但同时受到python本身性能的限制.我们已经看到,许多成功的网站都是利用动态语言(比如Python, Ruby或者PHP,比如twitter和facebook)快速

  • Python实现简单的获取图片爬虫功能示例

    本文实例讲述了Python实现简单的获取图片爬虫功能.分享给大家供大家参考,具体如下: 简单Python爬虫,获得网页上的照片 #coding=utf-8 import urllib import re def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.comp

  • Python 实现简单的shell sed替换功能(实例讲解)

    code: f = open('yesterday','r',encoding='utf-8') f2 = open('yesterday.bak','w',encoding='utf-8') old_str = input('请输入要修改的字符:') replace_str = input('请输入替换成的字符:') for line in f.readlines(): line = line.replace(old_str,replace_str) print(line) f2.write(

  • python实现简单的计时器功能函数

    本文实例讲述了python实现简单的计时器功能函数.分享给大家供大家参考.具体如下: 此函数通过python实现了一个简单的计时器动能: ''' Simple Timing Function. This function prints out a message with the elapsed time from the previous call. It works with most Python 2.x platforms. The function uses a simple tric

  • Python实现简单生成验证码功能【基于random模块】

    本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内置函数来实现一个简单的验证码功能. import random def veri_code(): li = [] for i in range(6): #循环6次,生成6个字符 r = random.randrange(0, 5) #随机生成0-4之间的数字 if r == 1 or r == 4:

随机推荐