在網(wǎng)絡(luò)世界的各種數(shù)據(jù)中,圖像是非常重要的組成部分。圖像處理是分析和操縱數(shù)字圖像的過程,旨在提高其質(zhì)量或從中提取一些信息,然后將其用于其他方面。圖像處理中的常見任務(wù)包括顯示圖像,裁剪、翻轉(zhuǎn)、旋轉(zhuǎn)等對圖像的變形操作,圖像分割、分類或圖像特征提取,圖像恢復(fù)和圖像內(nèi)容識別等。
專業(yè)的美工人員會使用Photoshop等軟件修改圖片。不過對于我們程序員來說Python可以成為圖像處理任務(wù)的最佳選擇,因為Python內(nèi)置嵌入了很多優(yōu)秀的函數(shù)和模塊庫,其中有不少免費且先進(jìn)的圖像處理工具。在這里我們介紹一些簡單的Python圖像處理庫用法。
這里我們推薦PIL(Python Imaging Library,圖像處理類庫),PIL是免費的,里面提供了通用的圖像處理功能,多數(shù)對圖像的基本操作都能在這里找到,比如圖像縮放、裁剪、旋轉(zhuǎn)、顏色轉(zhuǎn)換等。利用PIL中的函數(shù),我們可以從大多數(shù)圖像格式文件中讀取數(shù)據(jù),然后寫入最常見的圖像格式文件中。
本次實驗我們可以使用Pycharm軟件或者Anaconda平臺,兩者的區(qū)別在于Pycharm需要手動導(dǎo)入安裝模塊庫,而Anaconda安裝時已經(jīng)內(nèi)置了大量模塊庫。下面就和大家分享一下PIL模塊的基本用法,首先需要導(dǎo)入圖片,導(dǎo)入成功后可以根據(jù)實際的需求對圖片進(jìn)行修改與調(diào)整,比如縮放、圖像的模糊處理、冷暖色調(diào)整等。
Resize模塊:resize模塊用于改變圖像大小,這同時也意味著改變圖像的文件尺寸,一般用于對不同來源的圖像提前統(tǒng)一尺寸或縮小圖像文件容量便于后續(xù)處理或傳輸。你可以單獨修改圖像的高或?qū)?,也可以按比例調(diào)整圖像大小。模塊的原型img.resize((width,high))。width和high分別代表著圖像的寬度和高度。模塊庫的導(dǎo)入和圖像路徑的輸入和輸出都在之前的數(shù)據(jù)分析中提到過的,忘記的同學(xué)可以查閱一下相關(guān)的資料。
Filter模塊:ImageFilter模塊提供了圖像濾波器的相關(guān)定義,所謂濾波器就是把圖像整體數(shù)據(jù)變成波,再將特定頻段的波過濾掉,通過這樣的數(shù)據(jù)處理將圖像轉(zhuǎn)換成多達(dá)十種不同的效果,這十種濾波器包含:模糊濾鏡、輪廓濾鏡、細(xì)節(jié)增強(qiáng)濾波、邊緣增強(qiáng)濾波、邊緣增強(qiáng)(閾值更大)、浮雕濾鏡、邊界濾鏡、平滑濾鏡、平滑濾鏡(閾值更大)、銳化濾鏡。不同的濾鏡帶來的效果感受也是不一樣的。
Split模塊:在Image子庫下split()函數(shù)常用來分離RGB圖片的三個顏色通道來實現(xiàn)顏色交換。Image.split()方法從圖像返回當(dāng)前圖像各個通道組成的一個元組。分割一個“RGB”圖像會創(chuàng)建三個新圖像,每個圖像都包含一個原始波段(紅色、綠色、藍(lán)色)的副本。提取出來的RGB數(shù)值可以嵌套lambda函數(shù)一起使用。這樣后續(xù)可以根據(jù)數(shù)值對圖像分通道進(jìn)行一定的調(diào)整,當(dāng)然圖片最后的色彩結(jié)果也會有區(qū)別了。
PIL是Python圖像處理最基礎(chǔ)也是最常用的模塊之一,后期我們還會對圖片進(jìn)行裁剪、亮度和灰度級的調(diào)整等等操作。有興趣的同學(xué)也可以查找相關(guān)資料自行嘗試調(diào)整一下自己的圖片哦。