去掉圖片黑色水印

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)

常見的參考表,純色下特別有效,漸變的不好弄。

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