最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python編程OpenCV和Numpy圖像處理庫實現(xiàn)圖片去水印

 更新時間:2021年09月26日 14:22:13   作者:朱小五是凹凸君呀  
這篇文章主要介紹了Python編程中如何實現(xiàn)圖片去水印本文采用了OpenCV和Numpy的圖像處理的方法來實現(xiàn),文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下

大家好,我是小五

前一陣給大家分享了,Python如何給圖片加水印。評論區(qū)就有小伙伴問,可不可使用Python去除圖片水印的方法呢?

這個肯定有啊,不過由于圖片水印的種類有很多,今天我們先講最簡單的一種。

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

這種通常可以進(jìn)行簡單的亮度/對比度轉(zhuǎn)換,直到水印消失并降低亮度以進(jìn)行補償。

參考別人的方法,我發(fā)現(xiàn)可以用多種方法去除水印。大致原理比較相似,下面先講OpenCV的方法。

OpenCV + Numpy

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

函數(shù)簡介

介紹一下cv2的三個基本函數(shù):使用cv2.imread()cv2.imshow(),cv2.imwrite()分別可以讀取、顯示和保存圖像。

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

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

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

具體用法:

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

色彩轉(zhuǎn)換

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

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

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

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

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

說干就干

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)換后)。

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

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

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

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

也可以試試。

PIL + itertools

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

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

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

那就簡單粗暴一點,也就是像素值相加大概600(217+217+217)以上的像素點,都改成[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')

運行結(jié)果,對比一下。

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

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

那大家就喜歡那種方法就用哪個吧!

以上就是Python編程OpenCV和Numpy實現(xiàn)圖片去水印的詳細(xì)內(nèi)容,更多關(guān)于OpenCV和Numpy圖片去水印的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pytorch?SummaryWriter保存日志的方法

    pytorch?SummaryWriter保存日志的方法

    這篇文章主要介紹了pytorch?SummaryWriter保存日志的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • python使用XPath解析數(shù)據(jù)爬取起點小說網(wǎng)數(shù)據(jù)

    python使用XPath解析數(shù)據(jù)爬取起點小說網(wǎng)數(shù)據(jù)

    這篇文章主要介紹了python使用XPath解析數(shù)據(jù)爬取起點小說網(wǎng)數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • python自動化辦公操作excel的示例詳解

    python自動化辦公操作excel的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用python來實現(xiàn)自動化辦公操作excel文件進(jìn)行各種樣式展示,并自動發(fā)送文件給"老板"的郵箱,希望對大家有所幫助
    2024-03-03
  • Python中使用Flask、MongoDB搭建簡易圖片服務(wù)器

    Python中使用Flask、MongoDB搭建簡易圖片服務(wù)器

    這篇文章主要介紹了Python中使用Flask、MongoDB搭建簡易圖片服務(wù)器,本文是一個詳細(xì)完整的教程,需要的朋友可以參考下
    2015-02-02
  • 為什么相對PHP黑python的更少

    為什么相對PHP黑python的更少

    在本篇內(nèi)容里小編給各位整理了關(guān)于為什么相對PHP黑python的更少的原因和知識點,需要的朋友們可以參考下。
    2020-06-06
  • Python實現(xiàn)圖片自定義裁剪小工具

    Python實現(xiàn)圖片自定義裁剪小工具

    這篇文章主要給大家介紹了利用Python實現(xiàn)的圖片裁剪小工具,可以實現(xiàn)將圖片按照自定義尺寸進(jìn)行裁剪,感興趣的小伙伴可以動手自己試一試
    2022-01-01
  • Python啟動UDP服務(wù),監(jiān)聽并接收客戶端數(shù)據(jù)方式

    Python啟動UDP服務(wù),監(jiān)聽并接收客戶端數(shù)據(jù)方式

    這篇文章主要介紹了Python啟動UDP服務(wù),監(jiān)聽并接收客戶端數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • python中requests庫+xpath+lxml簡單使用

    python中requests庫+xpath+lxml簡單使用

    這篇文章主要介紹了python中requests庫+xpath+lxml簡單使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 一文深入了解Python中的繼承知識點

    一文深入了解Python中的繼承知識點

    Python?是面向?qū)ο蟮木幊陶Z言,因此支持面向?qū)ο蟮娜筇匦灾唬豪^承。本文就帶大家了解了解Python中繼承的相關(guān)知識點,感興趣的可以了解一下
    2022-11-11
  • Python中sub()的用法說明

    Python中sub()的用法說明

    這篇文章主要介紹了Python中sub()的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論

北海市| 靖江市| 罗平县| 盐津县| 襄樊市| 怀集县| 和龙市| 灵宝市| 辽源市| 巍山| 张家口市| 增城市| 岳阳县| 故城县| 花莲县| 台江县| 丹寨县| 桐庐县| 轮台县| 砚山县| 嘉兴市| 阿坝县| 永修县| 汾西县| 自贡市| 龙胜| 重庆市| 丹阳市| 琼结县| 宝山区| 广宁县| 凤冈县| 称多县| 松阳县| 鄢陵县| 湄潭县| 拉萨市| 大名县| 青浦区| 隆化县| 长治县|