Python生成各式各樣的圖像特效實例
1. 引用
本文重點介紹如何使用python進行圖像處理,生成各式各樣的圖像特效。閑話少說,我們直接開始吧!
2. 讀入圖像
首先我們來讀取我們的樣例圖像,并嘗試打印圖像中相應(yīng)元素的像素值。為了實現(xiàn)這一點,我們使用Python中的Pillow子模塊進行實現(xiàn),代碼如下:
from PIL import Image img = Image.open('./landscape.jpg') width, height = img.size print(width, height) for x in range(0, height): for y in range(0, width): (r, g, b) = img.getpixel((x, y)) print(r, g, b)
如果我們運行上面的代碼片段,我們可以在終端中看到圖像的寬和高,以及所有的像素值。其中每個像素值表示為3個整數(shù)值的元組,即紅色、綠色和藍色三個通道的對應(yīng)值。
3. 改變單個通道
現(xiàn)在,讓我們更新代碼來展示相應(yīng)的處理效果。為了實現(xiàn)這一點,我們將首先創(chuàng)建一個相同大小的新的對象。
之后,我們將遍歷原始圖像的像素,并將它們復(fù)制到新圖像中。此外,我們將該修改新圖像綠色通道的像素值:
from PIL import Image img = Image.open('./landscape.jpg') width, height = img.size print(width, height) new_img = Image.new('RGB', (width, height)) for row in range(0, height): for col in range(0, width): (r, g, b) = img.getpixel((col, row)) new_img.putpixel((col, row), (r, g + 50, b)) new_img.save("landscape_edited.png")
結(jié)果如下:
4. 黑白特效
為了實現(xiàn)基本的黑白特效,我們必須確保所有3個通道都具有相同的值。 讓我們再次迭代每個像素,并計算三個通道像素值的平均值:
rom PIL import Image img = Image.open('./landscape.jpg') width, height = img.size print(width, height) new_img = Image.new('RGB', (width, height)) for row in range(0, height): for col in range(0, width): (r, g, b) = img.getpixel((col, row)) avg = int((r + g + b) / 3) new_img.putpixel((col, row), (avg, avg, avg)) new_img.save("landscape_black_and_white.jpg")
我們知道,像素值 RGB=(0,0,0)表示黑色像素;同時像素值RGB=(255,255,255)表示白色像素;中間其他取值表示灰色像素值;運行上述代碼,得到結(jié)果如下:
5. 顏色反轉(zhuǎn)
看懂了上述代碼,那么顏色反轉(zhuǎn)的實現(xiàn)現(xiàn)在應(yīng)該會很簡單!
簡單來說。我們的目標是將黑色像素(0,0,0)轉(zhuǎn)換為白色像素(255,255,255)。為了實現(xiàn)這一點,我們將通過從255中減去舊像素的值來創(chuàng)建新像素,代碼如下:
from PIL import Image img = Image.open('./landscape.jpg') width, height = img.size print(width, height) new_img = Image.new('RGB', (width, height)) for row in range(0, height): for col in range(0, width): (r, g, b) = img.getpixel((col, row)) inverted_pixel = (255 - r, 255-g, 255-b) new_img.putpixel((col, row), inverted_pixel) new_img.save("landscape_edited.jpg")
得到結(jié)果如下:
6. 合并
最后,讓我們將圖像拆分成四個子部分,并將本節(jié)所學(xué)內(nèi)容充分利用起來:
from PIL import Image img = Image.open('./landscape.jpg') width, height = img.size print(width, height) new_img = Image.new('RGB', (width, height)) for row in range(0, height): for col in range(0, width): (r, g, b) = img.getpixel((col, row)) if col < width * 0.25: (r, g, b) = (r, g, b) elif col < width * 0.5: avg = int((r + g + b) / 3) (r, g, b) = (avg, avg, avg) elif col < width * 0.75: (r, g, b) = (r, g + 50, b) else: (r, g, b) = (255 - r, 255 - g, 255 - b) new_img.putpixel((col, row), (r, g, b)) new_img.save("landscape_edited.jpg")
得到結(jié)果如下:
鼓勵大家使用代碼,并嘗試新的組合和效果。歡迎在評論中分享大家的成果!
7. 總結(jié)
本文使用簡單的python代碼實現(xiàn)了各種各樣的圖像特效,可以方便大家進行自由組合成更加酷炫的效果。
更多關(guān)于Python生成圖像特效的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python命令行參數(shù)解析工具 docopt 安裝和應(yīng)用過程詳解
這篇文章主要介紹了Python命令行參數(shù)解析工具 docopt 安裝和應(yīng)用過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09如何在Windows下載、安裝Python和配置環(huán)境(新手、保姆級教程)
本文詳細介紹了如何在Windows系統(tǒng)上下載、安裝Python以及配置環(huán)境變量,通過步驟說明,即使是新手也能順利完成Python的安裝,并驗證其是否成功,感興趣的朋友跟隨小編一起看看吧2024-11-11Python 使用SFTP和FTP實現(xiàn)對服務(wù)器的文件下載功能
這篇文章主要介紹了Python 使用SFTP和FTP實現(xiàn)對服務(wù)器的文件下載功能,本文通過實例代碼給大家介紹的非常想詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12python 腳本生成隨機 字母 + 數(shù)字密碼功能
本文通過一小段簡單的代碼給大家分享基于python 腳本生成隨機 字母 + 數(shù)字密碼功能,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05