激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 運(yùn)用python去除圖片水印

運(yùn)用python去除圖片水印

2021-12-22 10:51程序員啟航 Python

本文介紹了如何運(yùn)用python去除圖片的水印,文中使用圖片以及代碼詳細(xì)的介紹了兩種去除的方法,感興趣的朋友可以自己參考一下

由于圖片水印的種類有很多,今天我們先講最簡單的一種。

運(yùn)用python去除圖片水印

即上圖中的①類水印,這種水印存在白色背景上的文檔里,水印是灰色,需要保留的文字是黑色。

這種通常可以進(jìn)行簡單的亮度/對(duì)比度轉(zhuǎn)換,直到水印消失并降低亮度以進(jìn)行補(bǔ)償[1]。參考別人的方法,我發(fā)現(xiàn)可以用多種方法去除水印。大致原理比較相似,下面先講OpenCV的方法。

 

OpenCV + Numpy

本方法需要使用的庫:cv2、numpy。cv2是基于OpenCV的圖像處理庫,可以對(duì)圖像進(jìn)行腐蝕,膨脹等操作;Numpy這是一個(gè)強(qiáng)大的處理矩陣和維度運(yùn)算的庫。

 

函數(shù)簡介

介紹一下cv2的三個(gè)基本函數(shù):使用

img = cv2.imread("test.png")
 
cv2.imshow("test.png",img)
cv2.waitKey(0)
 
cv2.imwrite("test_2.png", img)

對(duì)于Numpy呢,則要用到np.clip(),它是一個(gè)截取函數(shù),用于截取數(shù)組中小于或者大于某值的部分,并使得被截取部分等于固定值。

np.clip(a, a_min, a_max, out=None):

具體用法:

運(yùn)用python去除圖片水印

可以看到,數(shù)組x中的所有數(shù)限定到范圍0和5之間。為啥要介紹這些函數(shù)呢,接著往下看。

 

色彩轉(zhuǎn)換

回到本文一開始,我們想去除文檔圖片中的水印。

上圖中我選取了三個(gè)點(diǎn),這三個(gè)像素點(diǎn)分別對(duì)應(yīng)背景白色、黑色字體以及灰色的水印。

我們現(xiàn)在要做的事,就是想辦法把水印轉(zhuǎn)換成白色背景。換言之,就是把圖片中[217,217,217]的像素點(diǎn)轉(zhuǎn)換成[255,255,255]。

當(dāng)然這個(gè)[217,217,217]也不是固定的,只是一個(gè)范圍。為了方便調(diào)整,我選取了一些像素點(diǎn),做了一個(gè)線性回歸。

希望把圖片整體的像素顏色做一個(gè)改變,原有黑色字體盡量跟原來一致,而水印部分則一定要≥255,然后就可以通過np.clip()限定區(qū)間,使之都變成[255,255,255]。

運(yùn)用python去除圖片水印

說干就干

import cv2
import numpy as np
 
img = cv2.imread("test.png")
 
new = np.clip(1.4057577998008846*img-38.33089999653017, 0, 255).astype(np.uint8)
 
cv2.imwrite("removed.png", new)

下面我們看看調(diào)整后的效果(左側(cè)是轉(zhuǎn)換前,右側(cè)是轉(zhuǎn)換后)。

運(yùn)用python去除圖片水印

左:轉(zhuǎn)換前 右:轉(zhuǎn)換后

處理效果還是不錯(cuò)的,說明對(duì)于這類文檔圖片水印,通過幾行Python代碼就可以輕松去除水印。

不過通過線性回歸改變整體圖片顏色,也會(huì)影響原有的黑色文本,導(dǎo)致其顏色發(fā)生了微微變化。

那我們能不能簡單粗暴一點(diǎn)!只改變水印的顏色呢?

也可以試試。

 

PIL  + itertools

PIL也是一個(gè)Python 圖像處理庫,其中Image模塊是在Python PIL圖像處理中常見的模塊,對(duì)圖像進(jìn)行基礎(chǔ)操作的功能基本都包含于此模塊內(nèi)。

itertools 之前更是被我們稱為一個(gè)零差評(píng)的Python內(nèi)置庫。其中itertools.product用來產(chǎn)生多個(gè)列表和迭代器的(積)。

還是跟之前一個(gè)原理,我們希望將圖片中[217,217,217]的像素點(diǎn)轉(zhuǎn)換成[255,255,255]。

那就簡單粗暴一點(diǎn),也就是像素值相加大概600(217+217+217)以上的像素點(diǎn),都改成[255,255,255]就好了。

from itertools import product
from PIL import Image
 
img = Image.open("test.png")
width, height = img.size
for pos in product(range(width), range(height)):
    if sum(img.getpixel(pos)[:3]) > 600:
        img.putpixel(pos, (255,255,255))
img.save("removed_1.png")

運(yùn)行結(jié)果,對(duì)比一下。

運(yùn)用python去除圖片水印

左:轉(zhuǎn)換前 右:轉(zhuǎn)換后

與第一種方法對(duì)比,肉眼也沒看出來太明顯差別。

那大家就喜歡那種方法就用哪個(gè)吧!

到此這篇關(guān)于運(yùn)用python去除圖片水印的文章就介紹到這了,更多相關(guān)python去除圖片水印內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/aaahtml/article/details/119777122?utm_medium=distribute.pc_feed.none-task-blog-hot-11.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-hot-11.nonecase

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产在线精品一区二区三区不卡 | 亚州综合 | 日本成人午夜视频 | 国产精品av久久久久久久久久 | 亚洲国产精品高潮呻吟久久 | 性高跟鞋xxxxhd4kvideos | 国产亚洲精品久久久久婷婷瑜伽 | 免费观看的毛片手机视频 | 成年人免费视频播放 | 精品在线视频播放 | 亚洲国产精品一区 | 国产精品热 | 欧美一级特黄aaaaaaa什 | 黄网站色成年大片免费高 | 免费黄网站在线播放 | 最新亚洲国产 | 国产成人在线观看免费 | 主播粉嫩国产在线精品 | 亚洲精品欧美二区三区中文字幕 | 午夜视频在线观看91 | av在线免费看网站 | 日日摸夜夜骑 | 成人 日韩 | 免费黄色成人 | 亚洲欧美日韩中文在线 | 12av电影 | 国产精品片一区二区三区 | 亚洲免费资源 | 免费看一区二区三区 | 毛片免费大全短视频 | 久久精品久久精品久久精品 | 亚洲午夜在线 | 九色激情网 | 日韩精品dvd| 欧美日韩高清不卡 | 国模论坛 | 日韩黄色免费电影 | 免费男女乱淫真视频 | 亚洲成人入口 | 久久亚洲国产午夜精品理论片 | 91精品国产91热久久久做人人 |