<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      關(guān)于去除圖片上的水印

      現(xiàn)在有很多去除水印的工具,但基本上都需要你花錢。作為資深白嫖黨,想讓我花錢,那是不可能的。

      于是我做了下research(search, search, research…),我發(fā)現(xiàn)現(xiàn)在的“去水印”基本上都是一個(gè)思路:利用圖像修復(fù)算法。把有水印的地方看作是圖像損壞的地方,用相鄰像素替換那些損壞的地方。

      現(xiàn)在看看有什么開源工具可以用來去除圖片上的水印。

      1. openCV 圖像修復(fù)

      openCV中就有圖像修復(fù)的方法,提供了兩種算法分別基于_2004 年由 Alexandru Telea 撰寫的“基于快速行進(jìn)方法的圖像修復(fù)技術(shù)”_ 和 Bertalmio,Marcelo,Andrea L. Bertozzi 和 Guillermo Sapiro 在 2001 年的論文“Navier-Stokes,流體動(dòng)力學(xué)和圖像和視頻修補(bǔ)” 實(shí)現(xiàn)。調(diào)用cv.inpaint方法時(shí),前者用cv.INPAINT_TELEA標(biāo)記后者用cv.INPAINT_NS,openCV修復(fù)圖像的方法使用起來很簡單,只需要幾行代碼:

      import numpy as np
      import cv2 as cv
      
      img = cv.imread('messi_2.jpg')
      mask = cv.imread('mask2.png',0)
      dst = cv.inpaint(img,mask,3,cv.INPAINT_TELEA)
      # dst = cv.inpaint(img,mask,3,cv.INPAINT_NS)
      cv.imshow('dst',dst)
      cv.waitKey(0)
      cv.destroyAllWindows()
      

      上面messi_2.jpg是需要修復(fù)的圖片,而mask2.png是掩模圖片,這張圖片的作用是指定圖片損壞的位置,該圖片只有黑白兩色,白色就是損壞的地方。掩模圖片和原圖的大小(即寬高)必須完全一致,否則會(huì)報(bào)錯(cuò)。

      第一張圖像是原圖。第二個(gè)圖像是mask(掩模)。第三個(gè)圖像是第一個(gè)算法的結(jié)果,最后一個(gè)圖像是第二個(gè)算法的結(jié)果。

      對于輕微損壞,或者說只有很少一兩個(gè)水印的圖片,這種方法還是可以的。可是,對于滿屏水印的圖片怎么辦呢?

      像這樣的:

      2. mask圖像怎么創(chuàng)建

      用openCV去除上面這樣圖片的水印,首先要面臨的問題是mask圖片怎么辦?

      new Bing是這樣回答的:

      創(chuàng)建掩模圖像是圖像修復(fù)過程中的一個(gè)重要步驟。掩模圖像用于指示原始圖像中需要修復(fù)的區(qū)域。以下是創(chuàng)建掩模圖像的基本步驟:

      _1. 打開圖像編輯軟件:你可以使用任何圖像編輯軟件,如Photoshop、GIMP或者Paint.NET。

      2. 導(dǎo)入原始圖像:將需要修復(fù)的原始圖像導(dǎo)入到圖像編輯軟件中。

      3. 創(chuàng)建新圖層:在原始圖像上創(chuàng)建一個(gè)新的圖層,用于繪制掩模。

      4. 選擇畫筆工具:使用畫筆工具,在新圖層上繪制需要修復(fù)的區(qū)域。通常,我們使用白色來標(biāo)記這些區(qū)域。

      5. 填充損壞區(qū)域:確保所有需要修復(fù)的區(qū)域都被白色完全覆蓋。如果區(qū)域很小,可以使用放大工具來幫助精確>繪制。

      6. 保存掩模圖像:完成繪制后,只保存包含掩模的圖層(通常為白色損壞區(qū)域和黑色背景)為一個(gè)新的圖像文>件,格式可以是PNG或BMP,以保留二值信息。在OpenCV中使用掩模圖像時(shí),掩模應(yīng)該是一個(gè)二值圖像,其中白色代表需要修復(fù)的區(qū)域,黑色代表不需要修復(fù)的區(qū)域。如果你有任何疑問或需要進(jìn)一步的幫助,請告訴我!

      學(xué)會(huì)了吧?然后,讓我展示一下真正的技術(shù):

      吶,這就是我根據(jù)上面的圖片創(chuàng)建的掩模圖像。

      import cv2
      
      def remove_watermark(image_path, watermark_path, output_path):
          # 讀取原始圖像和水印圖像
          original_image = cv2.imread(image_path)
          watermark = cv2.imread(watermark_path, cv2.IMREAD_GRAYSCALE)
          # 去除水印
          watermark_removed = cv2.inpaint(original_image, watermark, 3, cv2.INPAINT_NS)
          # 保存去除水印后的圖像
          cv2.imwrite(output_path, watermark_removed)
      # 使用示例
      remove_watermark("original_image.jpg", "mask.png", "output_image.jpg")
      

      看一下效果吧:

      這效果,真是一言難盡,你說它沒去吧,它的確沒有水印了;你說它去了吧,這還不如不去…

      什么原因呢?難道是因?yàn)槲彝盔f涂得不好?需要更精確?我想過一個(gè)雞賊的辦法:往這網(wǎng)站上傳一個(gè)純黑的圖片,它加了水印我直接下載下來當(dāng)mask,但這有點(diǎn)冒險(xiǎn)…

      于是,讓我再展示一下真正的技術(shù):

      我把水印提取出來做mask這下夠精確了吧。

      再看效果:

      這玩意,不能說跟原圖一模一樣,那也的確是沒啥差別。我覺得這不是mask文件的問題,mask文件太精確不是好事,應(yīng)該還是修復(fù)算法的問題。

      3.機(jī)器學(xué)習(xí)修復(fù)算法

      既然是算法不行,那,有沒有更好的修復(fù)算法呢?有,就是使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來提取圖像的特征,如邊緣、紋理、顏色等信息然后修復(fù)。現(xiàn)成的也有:

      https://github.com/braindotai/Watermark-Removal-Pytorch 這個(gè)是使用Pytorch來訓(xùn)練;

      https://github.com/zuruoke/watermark-removal 這個(gè)用的是tensorflow。

      遺憾的是:這兩個(gè),無論用哪一個(gè),你都逃不掉創(chuàng)建mask。為什么不能通過機(jī)器學(xué)習(xí)自己識別水印創(chuàng)建mask呢?Watermark-Removal-Pytorch項(xiàng)目的README中也給出了解釋:

      總的來說: 做水印識別代價(jià)太大,而且效果不好。

      當(dāng)我想試試這兩個(gè)項(xiàng)目的時(shí)候,又發(fā)現(xiàn)了另外一個(gè)項(xiàng)目:iopaint!這個(gè)有web界面可以直接在本地跑起來,而且可以下載訓(xùn)練好的模型直接用!于是我裝起來試了一下:

      直接涂在水印上就可以去除水印,可以涂一個(gè)去一個(gè),也可以全部涂好一起去,一起去除要花得時(shí)間長一些。

      去除的結(jié)果是這樣的:

      這個(gè)效果在我看來已經(jīng)是非常不錯(cuò)了。還有一個(gè)讓人驚喜的地方是,它還可以下載mask文件!

      有了mask文件你就可以批量去除水印了,當(dāng)然了,你所有圖片水印的位置要都一樣。我試了一下,某房產(chǎn)網(wǎng)站的圖片水印的位置也都是一樣的。如果它不升級更新,你可以用一個(gè)mask文件去除水印

      iopaint run --model=lama --device=cpu \
      --image=/path/to/image_folder \
      --mask=/path/to/mask_folder \
      --output=output_dir
      

      這個(gè)命令的解釋:

      –image is the folder containing input images,–mask is the folder containing corresponding mask images. When –mask is a path to a mask file, all images will be processed using this mask.

      iopaint真的是個(gè)不錯(cuò)的項(xiàng)目,可是要用起來,你多少要有點(diǎn)編程知識。不過,iopaint有個(gè)機(jī)智的地方是:它有windows的一鍵安裝包,但是,你得花錢買。哈哈哈。

      聲明:文中的水印圖片來自互聯(lián)網(wǎng),我僅拿來做學(xué)習(xí)交流的。如果侵權(quán)了,可以聯(lián)系我,我先給您磕一個(gè),然后馬上刪掉。

      參考:

      https://apachecn.github.io/opencv-doc-zh/#/docs/4.0.0/9.2-tutorial_py_inpainting

      https://github.com/zuruoke/watermark-removal

      https://github.com/braindotai/Watermark-Removal-Pytorch

      https://github.com/Sanster/IOPaint

      https://www.iopaint.com/

      -------------------------------

      著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

      原文: https://wangxuan.me/tech/2024/06/04/watermark-removal.html

      posted on 2024-06-05 08:16  王君敕  閱讀(2679)  評論(14)    收藏  舉報(bào)

      主站蜘蛛池模板: 大又大又粗又硬又爽少妇毛片 | 国产中文字幕日韩精品| 日本中文一二区有码在线| 午夜在线观看成人av| 国产suv精品一区二区四| 国产精品久久久久鬼色| 人妻18毛片A级毛片免费看| 国产午夜精品视频在线播放 | 人妻日韩人妻中文字幕| 成人亚洲av免费在线| 久久被窝亚洲精品爽爽爽| 国产精品播放一区二区三区| 国语精品国内自产视频| 99久久久无码国产麻豆| 日韩一区精品视频一区二区| 亚洲色www成人永久网址| 熟妇的奶头又大又长奶水视频 | 日本高清一区二区三| 中文字幕人妻精品在线| 国产人妇三级视频在线观看| 欧美白人最猛性xxxxx| 精品国产第一国产综合精品| 欧美性猛交xxxx黑人| 日本高清久久一区二区三区| 国产suv精品一区二区四| 国产线播放免费人成视频播放| 午夜大尺度福利视频一区| 黑人欧美一级在线视频| 九月婷婷人人澡人人添人人爽| 在线 | 国产精品99传媒a | 精品国产成人午夜福利| 久热这里只有精品12| AV老司机AV天堂| 国自产在线精品一本无码中文 | 国产蜜臀av在线一区二区| 无码日韩av一区二区三区| 97人妻中文字幕总站| 亚洲精品成a人在线观看| 国内少妇人妻偷人精品视频| 色综合网天天综合色中文| 盱眙县|