OpenCV python去除图片水印

在浏览阿里巴巴网站的时候发现有些图片有水印,想着怎么能把它们去除.以下的去除只适合单个图片去除,对于大量图片去除水印的功能需要大伙一起研究

HSV范围
在这里插入图片描述
(图1)
在这里插入图片描述
(图2)

# -*- coding: utf-8 -*-
# @Time    : 2019/11/11 16:50
# @Author  :


import cv2 as cv
import numpy as np


def console_location(path):
    """
    控制台输出区域像素的位置
    :param path:
    :return:
    """
    # 定片位置
    img = cv.imread(path)

    def on_mouse(event, x, y, flags, param):
        if event == cv.EVENT_LBUTTONDOWN:
            # 宽 高
            print(x, y)

    # 构建窗口
    # 回调绑定窗口
    cv.namedWindow("img", cv.WINDOW_NORMAL)
    cv.setMouseCallback("img", on_mouse, 0)
    cv.imshow("img", img)
    # 键盘输入 q退出
    if cv.waitKey() == ord("q"):
        cv.destroyAllWindows()


class WaterMark(object):

    def mark(self, path):
        # 提取感兴趣区域ROI
        img = cv.imread(path)
        # 通过运行console_location函数后在相应的图片上点击两个点可以获取一下两个参数
        # 高1:21:2
        roi = img[248:291, 91:596]
        # cv.imwrite('02.jpg', roi)
        roi_hsv = cv.cvtColor(roi, cv.COLOR_BGR2HSV)
        # cv.imwrite('hsv.jpg', roi_hsv)

        # 设定白色HSV范围
        lower = np.array([0, 0, 221])
        upper = np.array([180, 30, 247])

        # 创建水印蒙层
        kernel = np.ones((3, 3), np.uint8)
        # cv.imwrite('kernel.jpg',kernel)
        mask = cv.inRange(roi_hsv, lower, upper)
        # cv.imwrite(r'mask.jpg',mask)
        # 对水印蒙层进行膨胀操作
        dilate = cv.dilate(mask, kernel, iterations=3)
        res = cv.inpaint(roi, dilate, 7, flags=cv.INPAINT_TELEA)
        # 双边滤波
        res = cv.bilateralFilter(res, 5, 280, 50)

        # 高1:21:2
        img[248:291, 91:596] = res
        cv.imwrite('modified.jpg', img)


if __name__ == '__main__':
    path = './img/0fe80411-8d2f-4150-be73-ae43ba2e7cdc.jpg'
    # console_location(path)
    w = WaterMark()
    w.mark(path)


效果
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cocktail_py

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值