国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

利用Python去除圖片水印,太神奇了!

這篇具有很好參考價值的文章主要介紹了利用Python去除圖片水印,太神奇了!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

最近寫文章遇到圖片有水印,如何去除水印呢?

網(wǎng)上找了各種辦法,也跑到小紅書、抖音等平臺找有沒有不收費就去水印的網(wǎng)站,但是基本上都是需要VIP會員才可以。

話又說回來這種事情怎么能難倒一個程序員呢?Python的庫有這么多肯定有一款適合我吧?

于是找來了OpenCV。

OpenCV介紹

文檔鏈接:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html

Opencv(Open Source Computer Vision Library)是一個基于開源發(fā)行的跨平臺計算機視覺庫,它實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法,已成為計算機視覺領域最有力的研究工具。

在這里我們要區(qū)分兩個概念:

  • 圖像處理和計算機視覺的區(qū)別:圖像處理側重于“處理”圖像–如增強,還原,去噪,分割等等;

  • 而計算機視覺重點在于使用計算機來模擬人的視覺,因此模擬才是計算機視覺領域的最終目標。

OpenCV用C++語言編寫,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS, 如今也提供對于C#、Ch、Ruby,GO的支持

OpenCV應用領域有:人機互動、物體識別、 圖像分割、人臉識別、動作識別、運動跟蹤、機器人、運動分析、機器視覺、結構分析、汽車安全駕駛等。

安裝:

安裝numpy:pip install numpy

安裝opencv-python:pip install opencv-python

安裝opencv-contrib-python**:pip install opencv-contrib-python

如果安裝過程中有誤,可以去下載安裝whl:http://www.lfd.uci.edu/~gohlke/pythonlibs/,找到對應的版本下載。

在命令行安裝成功后,進入開發(fā)環(huán)境導入cv2,如果未報錯,就證明opencv安裝成功。

去水印

圖片展示

利用Python去除圖片水印,太神奇了!

記得學過PS中有蒙版,可以使用蒙版遮罩完成。

代碼:

python
#?方式一
import?cv2


#?黑底白字
src?=?cv2.imread("images/a1.png")??#?默認的彩色圖(IMREAD_COLOR)方式讀入原始圖像
#?black.jpg
mask?=?cv2.imread('images/a2.png',?cv2.IMREAD_GRAYSCALE)??#?灰度圖(IMREAD_GRAYSCALE)方式讀入水印蒙版圖像
#?參數(shù):目標修復圖像;?蒙版圖(定位修復區(qū)域);?選取鄰域半徑;?修復算法(包括INPAINT_TELEA/INPAINT_NS,?前者算法效果較好)
dst?=?cv2.inpaint(src,?mask,?3,?cv2.INPAINT_NS)

cv2.imwrite('result.jpg',?dst)

但是這種方法使用的時候要求兩張圖片的大小必須是一樣的,否則會一直報錯

Traceback?(most?recent?call?last):
??File?"/Users/running/PycharmProjects/untitled8/test1.py",?line?16,?in?<module>
????get_water()
??File?"/Users/running/PycharmProjects/untitled8/test1.py",?line?11,?in?get_water
????dst?=?cv2.inpaint(src,?mask,?3,?cv2.INPAINT_NS)
cv2.error:?OpenCV(4.1.2)?/Users/travis/build/skvark/opencv-python/opencv/modules/photo/src/inpaint.cpp:748:?error:?(-209:Sizes?of?input?arguments?do?not?match)?All?the?input?and?output?images?must?have?the?same?size?in?function?'icvInpaint'

可以分別打印一下尺寸看看,發(fā)現(xiàn)確實不一樣

import?cv2
from?PIL?import?Image

#?黑底白字
src?=?cv2.imread("images/a1.png")??#?默認的彩色圖(IMREAD_COLOR)方式讀入原始圖像
#?black.jpg
mask?=?cv2.imread('images/a2.png',?cv2.IMREAD_GRAYSCALE)??#?灰度圖(IMREAD_GRAYSCALE)方式讀入水印蒙版圖像
#?參數(shù):目標修復圖像;?蒙版圖(定位修復區(qū)域);?選取鄰域半徑;?修復算法(包括INPAINT_TELEA/INPAINT_NS,?前者算法效果較好)
print(src.shape,?mask.shape)
dst?=?cv2.inpaint(src,?mask,?3,?cv2.INPAINT_NS)

cv2.imwrite('result1.jpg',?dst)

(1454, 2182, 3) (1456, 2184)

于是要設置成一樣的大小

import?cv2
from?PIL?import?Image

src?=?cv2.imread("images/a1.png")??#?默認的彩色圖(IMREAD_COLOR)方式讀入原始圖像
#?black.jpg
mask?=?cv2.imread('images/a2.png',?cv2.IMREAD_GRAYSCALE)??#?灰度圖(IMREAD_GRAYSCALE)方式讀入水印蒙版圖像
#?參數(shù):目標修復圖像;?蒙版圖(定位修復區(qū)域);?選取鄰域半徑;?修復算法(包括INPAINT_TELEA/INPAINT_NS,?前者算法效果較好)
out2?=?cv2.resize(mask,(2182,1454))
out1?=?cv2.resize(src,(2182,1454))
print(out1.shape,?out2.shape)
dst?=?cv2.inpaint(out1,?out2,?3,?cv2.INPAINT_NS)
#
cv2.imwrite('result.jpg',?dst)

結果:

利用Python去除圖片水印,太神奇了!

這種方式似乎還是可以看到一些水印,我們可以采用下面一種方法。

圖片去水印原理

1、標定噪聲的特征,使用cv2.inRange二值化標識噪聲對圖片進行二值化處理,具體代碼:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]以外的顏色處理為0;

2、使用OpenCV的dilate方法,擴展特征的區(qū)域,優(yōu)化圖片處理效果;

3、使用inpaint方法,把噪聲的mask作為參數(shù),推理并修復圖片。

實現(xiàn)思路

1、從原圖片,截取右下角部分,另存為新圖片;

2、識別水印,顏色值為:[200, 200, 200]~[255, 255, 255]

3、去掉水印,還原圖片;

4、把原圖片、去掉水印的新圖片,進行重疊合并;

代碼

import?cv2
import?numpy?as?np
from?PIL?import?Image
import?os

dir?=?os.getcwd()
path?=?"a1.jpg"
newPath?=?"new.jpg"
img?=?cv2.imread(path,?1)
hight,?width,?depth?=?img.shape[0:3]

#?截取
cropped?=?img[int(hight?*?0.8):hight,?int(width?*?0.7):width]??#?裁剪坐標為[y0:y1,?x0:x1]
cv2.imwrite(newPath,?cropped)
imgSY?=?cv2.imread(newPath,?1)

#?圖片二值化處理,把[200,200,200]-[250,250,250]以外的顏色變成0
thresh?=?cv2.inRange(imgSY,?np.array([200,?200,?200]),?np.array([250,?250,?250]))
#?創(chuàng)建形狀和尺寸的結構元素
kernel?=?np.ones((3,?3),?np.uint8)
#?擴展待修復區(qū)域
hi_mask?=?cv2.dilate(thresh,?kernel,?iterations=10)
specular?=?cv2.inpaint(imgSY,?hi_mask,?5,?flags=cv2.INPAINT_TELEA)
cv2.imwrite(newPath,?specular)

#?覆蓋圖片
imgSY?=?Image.open(newPath)
img?=?Image.open(path)
img.paste(imgSY,?(int(width?*?0.7),?int(hight?*?0.8),?width,?hight))
img.save(newPath)

輸出結果:

?

利用Python去除圖片水印,太神奇了!文章來源地址http://www.zghlxwxcb.cn/news/detail-440936.html

到了這里,關于利用Python去除圖片水印,太神奇了!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包