學習目的:
CS2使用Python圖像處理庫Pillow處理圖像文件
學習內容:
CS2.1安裝Pillow
Pillow是Python中的圖像處理庫(PIL:Python Image Library),提供了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存,圖像顯示,格式轉換以及基本的圖像處理操作等。
1.Pycharm安裝Pillow
Pycharm:首先右鍵單擊File–>Settings
選擇Project Interpreter,如果安裝了Anaconda3可以直接導入它的庫;如果是Pycharm,點擊+號,Add,搜索要導入的庫,然後install package,等待安裝完成
2.Anaconda3 :安裝的時候就己經有Pillow庫了,直接調用
CS2.2 打開和顯示圖像
使用PIL.Image模塊的open()函數可以打開一個圖像,返回一個圖像對象,然後調用圖像對象的show()方法,可以在屏幕上顯示圖像。
1.新建一個Project,取名為Pillow,new---->python file ----->取名為test
2.終端輸入D:\PycharmProjects\Pillow\test.py運行,調用系統默認的圖像軟件打開圖片,並輸出對應圖片的信息。
CS2.3 圖像的基本操作
1.新建一個python文件,取名為image_test
2.把一幅圖像的4個副本排列成2×2網格:在左上方的副本是原始圖像,而畫面右上方、左下方、右下方則分別使用模塊PIL.ImageFilter中定義的內置過濾器CONTOUR、EMBOSS、FIND_EDGES進行過濾。
3.終端輸入命令行 D:\PycharmProjects\Pillow\image_test.py C:\images\1.jpg
CS2.4 批量圖像格式轉換
1.新建一個python文件,取名為image_convert
2.將jpg圖片批量轉化為png圖片
3.終端命令行輸入: D:\PycharmProjects\Pillow\image_convert.py c:\images jpg png
運行前:
運行後:
CS2.5 批量創建縮略圖
1.新建一個python文件,取名為image_thumbnail
2.將jpg圖片批量轉為對對應的縮略圖
3.終端輸入:D:\PycharmProjects\Pillow\image_thumbnail.py c:\images jpg
CS2.6 批量圖像加文字水印
1.新建一個python文件,取名為image_watermark1
2.給jpg圖片添加文字水印
3.終端輸入:
D:\PycharmProjects\Pillow\image_watermark1.py c:\images jpg “Python”
CS2.7 批量圖像加圖片水印
1.創建一個新的python文件,取名為 image_watermark2
2.首先使用Python的Pillow圖像庫中的Image模塊的new函數可以創建水印圖像對象,並使用圖像對象的paste方法把log圖像粘貼到水印圖像,最後通過Image模塊的composite函數合成水印圖像和原圖像。
3.終端輸入:D:\PycharmProjects\Pillow\image_watermark2.py c:\images jpg c:\images\logo.png
運行前:
運行後:
CS2.8 批量調整圖像大小
1.創建一個新的python文件,取名為image_resize
2.使用Image對象的resize()方法可以調整圖像大小。
運行效果:
3.終端輸入:可以自定義設置圖片的大小D:\PycharmProjects\Pillow\image_resize.py c:\images jpg 128 128
運行後:
CS3 使用嵌套循環實現圖像處理算法
學習內容:
CS3.1 圖像的數據結構概述
實際上,在“底層”圖像是由像素點組成的二維數組,每個像素點的位置表示為兩個整數的元組,像素的值根據圖像模式由對應的元組組成(例如,RGB模式表示為三個整數值組成的元組,分別表示構成顏色的紅、藍、綠的值,范圍為0到255)。
圖像處理的算法(例如,復制、旋轉、裁剪和平滑圖像等)根本上就是使用嵌套循環模式對這些像素進行處理。PIL.Image模塊中的Image類的方法getpixel()和putpixel()可以用於讀取和修改特定位置(loc)的像素的顏色值(pix)。其語法格式如下:
im.getpixel(loc) #返回位於位置loc的像素的顏色。
im.putpixel(loc, pix) #把位於位置loc的顏色替換為pix。
CS3.2 拷貝圖像
通過打開原始圖像,創建一個新的大小相同的空白圖像,然後將舊圖像中的像素顏色復制到新圖像相應的像素中。即使用嵌套循環,把舊圖像位置(i, j)的像素復制到新圖像的位置(i, j)。
新建image_copy.py文件,輸入代碼,並運行:
運行結果:
CS3.3 剪裁圖像
通過打開原始圖像,指定一個四元組的剪裁框,創建一個與剪裁框大小相同的空白圖像,然後將舊圖像中剪裁框內的像素顏色復制到新圖像中。同樣可以使用嵌套循環實現像素復制。
新建image_crop文件,輸入代碼,點擊運行:
裁剪後
CS3.4 水平或垂直翻轉圖像
通過打開原始圖像,創建一個新的大小相同的空白圖像,然後將舊圖像中的像素顏色復制到新圖像相應的像素中。水平翻轉時,原始圖像的像素(i,j)映射到目標圖像的位置(width-i-1,j);垂直翻轉時,原始圖像的像素(i,j)映射到目標圖像的位置(i,height-j-1)。
輸入代碼並運行
測試代碼:
運行後:
CS3.5 逆時針或順時針旋轉圖像90度
逆時針或順時針旋轉圖像90度的算法可以通過打開原始圖像(width×height),創建一個新的height×width大小的空白圖像,然後將舊圖像中的像素顏色復制到新圖像中相應的像素中。逆時針旋轉圖像90度時,原始圖像的像素(i,j)映射到目標圖像的位置(j,width-i-1);順時針旋轉圖像90度,原始圖像的像素(i,j)映射到目標圖像的位置(height-j-1,i)。
輸入代碼運行:
運行結果:
CS3.6 平滑圖像過濾器
簡單的平滑過濾器算法可以通過打開原始圖像,創建-一個新的大小相同的空白圖像,然後將將新圖像中的每個像素(i,j)的顏色設置為原始像素(i,j)及其相鄰像素的顏色的平均值。不位於圖像邊界上像素(i,j)有8個相鄰像素,其相鄰像素位於從列i-1到列i+1和行j+1到行j+1范圍。故可以通過下列代碼計算新圖像中像素(i,j)的顏色:原始圖像中像素(i,j)和它的鄰居像素的顏色的平均值。注意,如果像素位於邊緣,在i-1可能小於0,故可以使用max(-1,0)作為下限:同樣,可以使用min(i+1,width)作為上限。
輸入代碼並運行:
運行結果:在這裡插入圖片描述
學習目的:
CS2使用Python圖像處理庫Pillow處理圖像文件
學習內容:
CS2.1安裝Pillow
Pillow是Python中的圖像處理庫(PIL:Python Image Library),提供了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存,圖像顯示,格式轉換以及基本的圖像處理操作等。
1.Pycharm安裝Pillow
Pycharm:首先右鍵單擊File–>Settings
選擇Project Interpreter,如果安裝了Anaconda3可以直接導入它的庫;如果是Pycharm,點擊+號,Add,搜索要導入的庫,然後install package,等待安裝完成
2.Anaconda3 :安裝的時候就己經有Pillow庫了,直接調用
CS2.2 打開和顯示圖像
使用PIL.Image模塊的open()函數可以打開一個圖像,返回一個圖像對象,然後調用圖像對象的show()方法,可以在屏幕上顯示圖像。
1.新建一個Project,取名為Pillow,new---->python file ----->取名為test
2.終端輸入D:\PycharmProjects\Pillow\test.py運行,調用系統默認的圖像軟件打開圖片,並輸出對應圖片的信息。
CS2.3 圖像的基本操作
1.新建一個python文件,取名為image_test
2.把一幅圖像的4個副本排列成2×2網格:在左上方的副本是原始圖像,而畫面右上方、左下方、右下方則分別使用模塊PIL.ImageFilter中定義的內置過濾器CONTOUR、EMBOSS、FIND_EDGES進行過濾。
3.終端輸入命令行 D:\PycharmProjects\Pillow\image_test.py C:\images\1.jpg
CS2.4 批量圖像格式轉換
1.新建一個python文件,取名為image_convert
2.將jpg圖片批量轉化為png圖片
3.終端命令行輸入: D:\PycharmProjects\Pillow\image_convert.py c:\images jpg png
運行前:
運行後:
CS2.5 批量創建縮略圖
1.新建一個python文件,取名為image_thumbnail
2.將jpg圖片批量轉為對對應的縮略圖
3.終端輸入:D:\PycharmProjects\Pillow\image_thumbnail.py c:\images jpg
CS2.6 批量圖像加文字水印
1.新建一個python文件,取名為image_watermark1
2.給jpg圖片添加文字水印
3.終端輸入:
D:\PycharmProjects\Pillow\image_watermark1.py c:\images jpg “Python”
CS2.7 批量圖像加圖片水印
1.創建一個新的python文件,取名為 image_watermark2
2.首先使用Python的Pillow圖像庫中的Image模塊的new函數可以創建水印圖像對象,並使用圖像對象的paste方法把log圖像粘貼到水印圖像,最後通過Image模塊的composite函數合成水印圖像和原圖像。
3.終端輸入:D:\PycharmProjects\Pillow\image_watermark2.py c:\images jpg c:\images\logo.png
運行前:
運行後:
CS2.8 批量調整圖像大小
1.創建一個新的python文件,取名為image_resize
2.使用Image對象的resize()方法可以調整圖像大小。
運行效果:
3.終端輸入:可以自定義設置圖片的大小D:\PycharmProjects\Pillow\image_resize.py c:\images jpg 128 128
運行後:
CS3 使用嵌套循環實現圖像處理算法
學習內容:
CS3.1 圖像的數據結構概述
實際上,在“底層”圖像是由像素點組成的二維數組,每個像素點的位置表示為兩個整數的元組,像素的值根據圖像模式由對應的元組組成(例如,RGB模式表示為三個整數值組成的元組,分別表示構成顏色的紅、藍、綠的值,范圍為0到255)。
圖像處理的算法(例如,復制、旋轉、裁剪和平滑圖像等)根本上就是使用嵌套循環模式對這些像素進行處理。PIL.Image模塊中的Image類的方法getpixel()和putpixel()可以用於讀取和修改特定位置(loc)的像素的顏色值(pix)。其語法格式如下:
im.getpixel(loc) #返回位於位置loc的像素的顏色。
im.putpixel(loc, pix) #把位於位置loc的顏色替換為pix。
CS3.2 拷貝圖像
通過打開原始圖像,創建一個新的大小相同的空白圖像,然後將舊圖像中的像素顏色復制到新圖像相應的像素中。即使用嵌套循環,把舊圖像位置(i, j)的像素復制到新圖像的位置(i, j)。
新建image_copy.py文件,輸入代碼,並運行:
運行結果:
CS3.3 剪裁圖像
通過打開原始圖像,指定一個四元組的剪裁框,創建一個與剪裁框大小相同的空白圖像,然後將舊圖像中剪裁框內的像素顏色復制到新圖像中。同樣可以使用嵌套循環實現像素復制。
新建image_crop文件,輸入代碼,點擊運行:
運行結果:
裁剪後:
CS3.4 水平或垂直翻轉圖像
通過打開原始圖像,創建一個新的大小相同的空白圖像,然後將舊圖像中的像素顏色復制到新圖像相應的像素中。水平翻轉時,原始圖像的像素(i,j)映射到目標圖像的位置(width-i-1,j);垂直翻轉時,原始圖像的像素(i,j)映射到目標圖像的位置(i,height-j-1)。
輸入代碼並運行
測試代碼:
運行後:
CS3.5 逆時針或順時針旋轉圖像90度
逆時針或順時針旋轉圖像90度的算法可以通過打開原始圖像(width×height),創建一個新的height×width大小的空白圖像,然後將舊圖像中的像素顏色復制到新圖像中相應的像素中。逆時針旋轉圖像90度時,原始圖像的像素(i,j)映射到目標圖像的位置(j,width-i-1);順時針旋轉圖像90度,原始圖像的像素(i,j)映射到目標圖像的位置(height-j-1,i)。
輸入代碼運行:
運行結果:
CS3.6 平滑圖像過濾器
簡單的平滑過濾器算法可以通過打開原始圖像,創建-一個新的大小相同的空白圖像,然後將將新圖像中的每個像素(i,j)的顏色設置為原始像素(i,j)及其相鄰像素的顏色的平均值。不位於圖像邊界上像素(i,j)有8個相鄰像素,其相鄰像素位於從列i-1到列i+1和行j+1到行j+1范圍。故可以通過下列代碼計算新圖像中像素(i,j)的顏色:原始圖像中像素(i,j)和它的鄰居像素的顏色的平均值。注意,如果像素位於邊緣,在i-1可能小於0,故可以使用max(-1,0)作為下限:同樣,可以使用min(i+1,width)作為上限。
輸入代碼並運行:
運行結果: