兩種Python基於OpenCV的固定位置半透明水印去除方案
阿新 • • 發佈:2018-11-13
1. 基於 inpaint 方法(網上的方法,處理質量較低)
- 演算法理論:基於Telea在2004年提出的基於快速行進的修復演算法(FMM演算法),先處理待修復區域邊緣上的畫素點,然後層層向內推進,直到修復完所有的畫素點
- 處理方式:由ui人員製作出黑底白色水印且相同位置的水印蒙版圖(必須單通道灰度圖),然後使用inpaint方法處理原始影象,具體使用時可把水印區放粗,這樣處理效果會好點
# -*- coding: utf-8 -*- import cv2 src = cv2.imread('src.jpg') # 預設的彩色圖(IMREAD_COLOR)方式讀入原始影象 mask = cv2.imread(
2. 估算alpha值,然後逆向運算
save = img.copy() #複製影象
src = img
alpha=51.0/255.0
for row in range(src.shape[0]):
for col in range(src.shape[1]):
if img_mask[row, col].all() !=0:
save[row, col]=(src[row, col]-alpha* img_mask[row, col])/(1-alpha)