欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用Pillow實現(xiàn)圖像基本變化

 更新時間:2022年10月17日 16:29:10   作者:是蟹老板  
這篇文章主要為大家詳細介紹了Python如何使用Pillow實現(xiàn)圖像的基本變化處理,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以了解一下

一、圖像處理

1. 灰度圖像

灰度圖像矩陣元素的取值范圍通常為 [0,255] 。因此其數(shù)據類型一般為8位無符號整數(shù)的(int8),這就是人們經常提到的256灰度圖像。“0”表示純黑色,“255”表示純白色,中間的數(shù)字從小到大表示由黑到白的過渡色。在某些軟件中,灰度圖像也可以用雙精度數(shù)據類型(double)表示,像素的值域為[0,1],0代表黑色,1代表白色,0到1之間的小數(shù)表示不同的灰度等級。二值圖像可以看成是灰度圖像的一個特例。

2. 二值圖像

一幅二值圖像的二維矩陣僅由0、1兩個值構成,“0”代表黑色,“1”代白色。由于每一像素(矩陣中每一元素)取值僅有0、1兩種可能,所以計算機中二值圖像的數(shù)據類型通常為1個二進制位。二值圖像通常用于文字、線條圖的掃描識別(OCR)和掩膜圖像的存儲。

3. 索引圖像

索引圖像的文件結構比較復雜,除了存放圖像的二維矩陣外,還包括一個稱之為顏色索引矩陣MAP的二維數(shù)組。MAP的大小由存放圖像的矩陣元素值域決定,如矩陣元素值域為[0,255],則MAP矩陣的大小為256x3,用MAP=[RGB]表示。MAP中每一行的三個元素分別指定該行對應顏色的紅、綠、藍單色值,MAP中每一行對應圖像矩陣像素的一個灰度值,如某一像素的灰度值為64,則該像素就與MAP中的第64行建立了映射關系,該像素在屏幕上的實際顏色由第64行的[RGB]組合決定。也就是說,圖像在屏幕上顯示時,每一像素的顏色由存放在矩陣中該像素的灰度值作為索引通過檢索顏色索引矩陣MAP得到。索引圖像的數(shù)據類型一般為8位無符號整形(int8),相應索引矩陣MAP的大小為256x3,因此一般索引圖像只能同時顯示256種顏色,但通過改變索引矩陣,顏色的類型可以調整。索引圖像的數(shù)據類型也可采用雙精度浮點型(double)。索引圖像一般用于存放色彩要求比較簡單的圖像,如Windows中色彩構成比較簡單的壁紙多采用索引圖像存放,如果圖像的色彩比較復雜,就要用到RGB真彩色圖像。

4. RGB彩色圖像

RGB圖像與索引圖像一樣都可以用來表示彩色圖像。與索引圖像一樣,它分別用紅(R)、綠(G)、藍(B)三原色的組合來表示每個像素的顏色。但與索引圖像不同的是,RGB圖像每一個像素的顏色值(由RGB三原色表示)直接存放在圖像矩陣中,由于每一像素的顏色需由R、G、B三個分量來表示,M、N分別表示圖像的行列數(shù),三個M x N的二維矩陣分別表示各個像素的R、G、B三個顏色分量。RGB圖像的數(shù)據類型一般為8位無符號整形,通常用于表示和存放真彩色圖像,當然也可以存放灰度圖像。

5. 圖像存儲方式

數(shù)字化圖像數(shù)據有兩種存儲方式:位圖存儲(Bitmap)和矢量存儲(Vector)

我們平常是以圖像分辨率(即像素點)和顏色數(shù)來描述數(shù)字圖象的。

例如:一個800*600的圖像大小為:

彩色RGB:(800*600*3)/1024/1024=1.3733MB

灰度:1.373/3=0.46MB

二值圖:0.46/8=0.057MB

二、圖像處理基礎操作

1.查看圖片屬性

from skimage import io
#導入io模塊,以讀取目標路徑下的圖片
img = io.imread( ' ./tupian.jpg ')#讀取tupian.jpg文件
print(type(img ))
#顯示類型
print( img .shape)
#顯示尺寸
print(img. shape[0])#顯示高度print( img . shape[1])#顯示寬度
print( img . shape[2])#顯示圖片通道數(shù)print( img.size)
#顯示總像素數(shù)
print(img .max( ) )
#顯示最大像素值
print(img .min( ) )
#顯示最小像素值
print(img.mean( ))
#像素平均值
print( img[e][0])
#指定像素點的像素值
io.imshow( img)
#io模塊下顯示圖像
io.show( )
#顯示圖像

2. 顯示RGB不同通道

img_r=image[:,, :,o]
img_g=imagel:,:,1]
img_b=image[:,:,2]
plt.subplot(2,2,1)
io.imshow(image)
plt.subplot(2,2,2)
io.imshow(img_r)
plt.subplot(2,2,3)
io.imshow(img_g)
plt.subplot(2,2,4)
io.imshow(img_b)
plt.show()

3.PGB和HSV的轉換

#RGB→HSV
max=max(R,G,B);
min=min(R,G,B);
V=max(R,G,B);
S=(max-min)/max;
if (R = max) H =(G-B)/(max-min)* 60;
if (G = max) H = 120+(B-R)/(max-min)* 60;
if (B = max) H = 240 +(R-G)/(max-min)* 60;
if (H < 0) H = H+ 360;
#HSV→RGB
if (s = 0)
	R=G=B=V;
else
	H /= 60;
	i = INTEGER(H);
	f = H - i;
	a = V * ( 1 - s );
	b = V * ( 1 - s * f );
	c = V * ( 1 - s * (1 - f ) );
switch(i)
	case 0: R = V; G = c; B = a;
	case 1: R = b; G = v; B = a;
	case 2: R = a; G = v; B = c;
	case 3: R = a; G = b; B = v;
	case 4: R = c; G = a; B = v;
	case 5: R = v; G = a; B = b;

三、實例

1.導入第三方庫

from PIL import  Image
from matplotlib import pyplot as plt
from PIL import ImageFilter
from PIL import ImageEnhance

安裝第三方庫的方法:

pip install xxx

2.修改顯示的圖像大小的方法

print("默認圖片大小是 ", plt.rcParams["figure.figsize"])
plt.rcParams["figure.figsize"] = (20, 10)
print("修改后默認圖片大小是", plt.rcParams["figure.figsize"])

3.打開一張圖片

img=Image.open(r'C:\Users\20415\Desktop\03.png')
plt.imshow(img)
plt.show()

4.轉換為灰階圖像

#去色處理
img_L=Image.open(r'C:\Users\20415\Desktop\03.png').convert("L")
plt.imshow(img_L)
plt.show()

5.對圖像進行增強處理

#圖像增強處理
out = img.filter(ImageFilter.DETAIL)
plt.subplot(121),plt.imshow(img),plt.title("befor")
plt.subplot(122),plt.imshow(out),plt.title("after")
plt.imshow(out)
plt.show()

6.提高圖像清晰度

#將清晰度提高10倍
img_0=Image.open(r'C:\Users\20415\Desktop\03.png')
shp=ImageEnhance.Sharpness(img_0)
img_0_shp=shp.enhance(10)
plt.subplot(121),plt.imshow(img_0),plt.title("befor")
plt.subplot(122),plt.imshow(img_0_shp),plt.title("after")
plt.show()

7.提高圖像對比度

#將對比度提高1.8倍
img_0=Image.open(r'C:\Users\20415\Desktop\03.png')
enh = ImageEnhance.Contrast(img_0)
img_0_cont=enh.enhance(1.8)
plt.subplot(121),plt.imshow(img_0),plt.title("befor")
plt.subplot(122),plt.imshow(img_0_cont),plt.title("after")
plt.show()

8.提高圖像色彩飽和度

#將色彩飽和度提高1.8倍
img_1=Image.open(r'C:\Users\20415\Desktop\03.png')
color=ImageEnhance.Color(img_1)
img_1_cont=color.enhance(1.8)
plt.subplot(121),plt.imshow(img_1),plt.title("befor")
plt.subplot(122),plt.imshow(img_1_cont),plt.title("after")
plt.show()

9.提高圖像亮度

#亮度
img2=Image.open(r'C:\Users\20415\Desktop\03.png')
brg=ImageEnhance.Brightness(img2)
img2_brg=brg.enhance(1.1)
plt.subplot(121),plt.imshow(img2),plt.title("befor")
plt.subplot(122),plt.imshow(img2_brg),plt.title("after")
plt.show()

pillow官網

Pillow (PIL Fork) 9.2.0 documentation

以上就是Python使用Pillow實現(xiàn)圖像基本變化的詳細內容,更多關于Python Pillow圖像變化的資料請關注腳本之家其它相關文章!

相關文章

  • Python Django框架介紹之模板標簽及模板的繼承

    Python Django框架介紹之模板標簽及模板的繼承

    今天給大家?guī)鞵ython Django框架的相關知識,文中對模板標簽及模板的繼承介紹的非常詳細,對正在學習python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Python自動化操作Excel方法詳解(xlrd,xlwt)

    Python自動化操作Excel方法詳解(xlrd,xlwt)

    Excel是Windows環(huán)境下流行的、強大的電子表格應用。本文將詳解用Python利用xlrd和xlwt實現(xiàn)自動化操作Excel的方法詳細,需要的可以參考一下
    2022-06-06
  • Django框架序列化與反序列化操作詳解

    Django框架序列化與反序列化操作詳解

    這篇文章主要介紹了Django框架序列化與反序列化操作,結合實例形式詳細分析了Django框架Serializer類操作對象序列化及反序列化相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • python requests 使用快速入門

    python requests 使用快速入門

    這篇文章主要介紹了python requests 使用快速入門教程,使用 Requests 發(fā)送網絡請求非常簡單,具體操作方法,大家參考下本文吧
    2017-08-08
  • Python爬蟲HTPP請求方法有哪些

    Python爬蟲HTPP請求方法有哪些

    在本篇內容里小編給大家整理的是關于Python爬蟲HTPP請求方法以及相關知識點,需要的朋友們可以參考下。
    2020-06-06
  • python正則表達式常見的知識點匯總

    python正則表達式常見的知識點匯總

    正則表達式提供了一些可用的匹配模式,比如忽略大小寫、多行匹配等,下面這篇文章主要給大家介紹了關于python正則表達式常見的知識點,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Python paramiko 模塊淺談與SSH主要功能模擬解析

    Python paramiko 模塊淺談與SSH主要功能模擬解析

    這篇文章主要介紹了Python paramiko 模塊詳解與SSH主要功能模擬,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python使用MD5加密字符串示例

    Python使用MD5加密字符串示例

    這篇文章主要介紹了Python使用MD5加密字符串示例,對一些可能出現(xiàn)的錯誤點上本文也給出提醒,需要的朋友可以參考下
    2014-08-08
  • python opencv 檢測移動物體并截圖保存實例

    python opencv 檢測移動物體并截圖保存實例

    這篇文章主要介紹了python opencv 檢測移動物體并截圖保存實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python set集合類型操作總結

    Python set集合類型操作總結

    這篇文章主要介紹了Python set集合類型操作總結,本文介紹了一個小技巧、去重技巧、創(chuàng)建set、set基本操作等內容,需要的朋友可以參考下
    2014-11-11

最新評論