去掉图片黑色水印

import cv2 as cv
import numpy as np


class WaterMark:

    def Test(self, path):
        img = cv.imread(path)
        roi = img[980:1000, 0:137]  # 用画图打开,先高范围后宽宽范围 
        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, 0])  # H,S, V  
        # upper = np.array([180, 80, 220])
        # 黑白分明的黑色水印
        # lower = np.array([0, 0, 0])  # H(色调),S(饱和度), V (亮度) 对于白底黑色水印,v可以略微调大,亮度调低
        # upper = np.array([0, 0, 240])  
        lower = np.array([0, 0, 0])  # H,S, V
        upper = np.array([180, 72, 220])
        # 创建水印蒙层
        kernel = np.ones((3, 3), np.uint8)

        print(kernel)
        cv.imwrite('kernel.jpg', kernel)
        mask = cv.inRange(roi_hsv, lower, upper) #将这个范围内的变成白,这个范围外的变成黑,关注白色的范围大小
        cv.imwrite(r'mask.jpg', mask)

        # 对水印蒙层进行膨胀操作
        dilate = cv.dilate(mask, kernel, iterations=1)
        cv.imwrite('dilate.jpg', dilate)
        res = cv.inpaint(roi, dilate, 7, flags=cv.INPAINT_TELEA)
        cv.imwrite('res.jpg', res)
        img[980:1000, 0:137] = res
        cv.imwrite('modified.jpg', img)


if __name__ == '__main__':
    path = 'C:/Users/Administrator/Desktop/ditan.jpg'
    w = WaterMark()
    w.Test(path)

常见的参考表,纯色下特别有效,渐变的不好弄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章