前幾天在Python白銀交流群【顧德貓寧】問了一個Python去除水印慢的問題,問題如下:
下面的代碼去除水印需要13秒,麻煩大神幫忙看看,
def delete_watermark(path): t = time.time() img = Image.open(path) width, height = img.size for pos in product(range(width), range(height)): rgb = img.getpixel(pos)[:3] if sum(rgb) >= 255 and sum(rgb) < 600: img.putpixel(pos, (0, 0, 0)) # 替換水印,根據背景像素調整 elif sum(rgb) >= 600: # 檢測淺白色像素,即水印,根據水印類型調整 img.putpixel(pos, (255, 255, 255)) # 替換水印,根據背景像素調整 img = img.convert('L') print(time.time() - t)
去除水印的原圖如下:
去除水印的時間需要13秒,偶爾會2-3秒,不知道為啥很慢,有時候慢到接近30秒。
這里【此類生物】分享了自己的一個經驗,倒是覺得正常,13秒不算很慢。
后來【東哥】問了AI,給出的答案如下:
這段Python代碼的目的是去除圖像中的水印。代碼執行效率受到多種因素的影響,以下是一些可能導致執行時間較長的原因:
getpixel
和 putpixel
方法:這兩個方法在每次調用時都會進行磁盤I/O操作,因為它們需要從文件中讀取或寫入像素數據。頻繁的I/O操作會顯著降低代碼的執行效率。img.convert('L')
)。這個操作也需要時間,尤其是對于大型圖像。為了提高代碼的執行效率,可以考慮以下優化措施:
請注意,去除水印可能涉及版權和法律問題。在使用此類代碼時,請確保遵守相關法律法規,并尊重原創內容的版權。
看上去這個原因還是很多的,如果能夠跑起來的話,建議如果是自己用的話,還是不要先去追求性能了,如果是公司需要,可以跟老板提需求,換個好一些的電腦。
順利地解決了粉絲的問題。
如果你也有類似這種Python相關的小問題,歡迎隨時來交流群學習交流哦,有問必答!
大家好,我是Python進階者。這篇文章主要盤點了一個Python去除水印慢的問題,文中針對該問題,給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。
本文鏈接:http://www.tebozhan.com/showinfo-26-82026-0.html去除水印需要13秒,不知道為啥很慢,有時候慢到接近30秒
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com