日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python做基本的图像处理

發布時間:2024/8/26 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python做基本的图像处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PIL是python中的圖像處理類庫,為python提供了基本的圖像處理和基本操作。而PIL中最重要的就是Image模塊,下面給出具體的例子來理解此模塊。

讀取一幅圖像

  • 我們用Image模塊中的open()來實現.
    對于PNG,JPG和BMP等不同格式的彩色圖像之間的轉換都可以通過Image模塊來完成,具體地說,在打開這些圖像時,PIL會將他們解碼為三通道的'RGB'圖像,人們可以基于'RGB'圖像進行處理。
from PIL import Image import matplotlib.pyplot as plt import numpy as np image=Image.open('D:/test.jpg')#讀取圖像 plt.imshow(image) plt.show()#需要調用show()方法,不然圖像只會在內存中而不顯示出來

轉化為灰度圖像

  • 我們用convert()方法來實現圖像的灰度轉化。
    Convert()會根據傳入參數的不同將圖像變成不同的模式。PIL中有九種不同模式。分別為1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。
    其中,模式‘1’為二值圖像,非黑即白。但是它每個像素用8個bit表示,0表示黑,255表示白。
    模式‘L’為灰色圖像它的每個像素用8個bit表示,0表示黑,255表示白,其他數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“L”模式是按照下面的公式轉換的:
    L = R * 299/1000 + G * 587/1000+ B * 114/1000
    模式“P”為8位彩色圖像,它的每個像素用8個bit表示,其對應的彩色值是按照調色板查詢出來的。

模式“RGBA”為32位彩色圖像,它的每個像素用32個bit表示,其中24bit表示紅色、綠色和藍色三個通道,另外8bit表示alpha通道,即透明通道。

模式“CMYK”為32位彩色圖像,它的每個像素用32個bit表示。模式“CMYK”就是印刷四分色模式,它是彩色印刷時采用的一種套色模式,利用色料的三原色混色原理,加上黑色油墨,共計四種顏色混合疊加,形成所謂“全彩印刷”。

模式“YCbCr”為24位彩色圖像,它的每個像素用24個bit表示。YCbCr其中Y是指亮度分量,Cb指藍色色度分量,而Cr指紅色色度分量。人的肉眼對視頻的Y分量更敏感,因此在通過對色度分量進行子采樣來減少色度分量后,肉眼將察覺不到的圖像質量的變化。

模式“RGB”轉換為“YCbCr”的公式如下:
Y= 0.257R+0.504G+0.098B+16
Cb = -0.148R-0.291G+0.439B+128
Cr = 0.439R-0.368G-0.071*B+128

模式“I”為32位整型灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“I”模式是按照下面的公式轉換的:
I = R * 299/1000 + G * 587/1000 + B * 114/1000

模式“F”為32位浮點灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“F”模式是按照下面的公式轉換的:
F = R * 299/1000+ G * 587/1000 + B * 114/1000

  • 我們以灰度圖像為例,將目標圖像轉換成灰度圖像,由上可知,我們要給convert()方法傳入參數“L”,具體代碼如下:
from PIL import Image import matplotlib.pyplot as plt import numpy as np import matplotlib.cm as cm #cm是colormap的縮寫 image_gray=Image.open('D:/test.jpg').convert("L") data=np.array(image_gray) #在顯示灰度圖像時array()方法將圖像轉換成Numpy的數組對象,圖片得以顯式,否則會出現錯誤 plt.imshow(data,cmap=cm.gray)# cmap:代表顏色圖譜,默認繪制為RGB(A)顏色空間。 plt.show()

轉換圖像的格式

  • 通過save()方法,PIL可以將圖像保存成多種格式的文件,當傳入不同的擴展名時,它會根據擴展名自動轉換圖像的格式。
from PIL import Image image=Image.open('D:/test.jpg')#打開jpg圖像文件 image.save('D:/train.jpg')#保存圖像,并轉換成png格式 #讀取轉換的train.png圖像 from PIL import Image import matplotlib.pyplot as plt import numpy as np image=Image.open('D:/train.png') plt.imshow(image) plt.show()

創建縮略圖

  • thumbnail()方法接受一個一元組參數,分別對應著縮略圖的寬高,在縮略時,函數會保持圖片的寬高比例,如果輸入的參數寬高和原圖寬高比不同,則會依據最小對應邊進行于按比例縮放。
    比如:一張圖片為300*420大小的圖片,當參數為(200,200)時,生成的縮略圖大小為71*100,保持原圖的寬高比

裁剪圖像區域

  • 使用PIL中的crop()方法可以從一幅圖像中裁剪指定區域,該區域使用四元組來指定,四元組的坐標依次是(左,上,右,下)PIL中指定坐標系的左上角坐標為(0,0).
from PIL import Image import matplotlib.pyplot as plt import numpy as np image=Image.open('D:/test.jpg') box=(500,500,2500,2500) region=image.crop(box) data=np.array(region) plt.imshow(data) plt.show()

調整尺寸和旋轉

  • 我們用resize()方法來調整一幅圖像的尺寸,該方法的參數是一個元組,用來指定新圖像的大小:例如 out=image.resize((32,32))
  • 要旋轉一幅圖像,可以使用逆時針方式表示旋轉角度,然后用rotate()方法
from PIL import Image import matplotlib.pyplot as plt image=Image.open('D:/test.jpg')#讀取圖像 plt.imshow(image.rotate(180))#逆時針旋轉180度 plt.show()#需要調用show()方法,不然圖像只會在內存中而不顯示出來

?

出處:https://www.cnblogs.com/LouieZhang/p/8529241.html

轉載于:https://www.cnblogs.com/mq0036/p/8547594.html

總結

以上是生活随笔為你收集整理的python做基本的图像处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。