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

python中opencv與PIL圖片讀取保存及相互轉(zhuǎn)化方式

 更新時間:2023年09月08日 09:00:12   作者:木南成長之路  
這篇文章主要介紹了python中opencv與PIL圖片讀取保存及相互轉(zhuǎn)化方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

opencv與PIL圖片讀取保存及相互轉(zhuǎn)化

1. opencv讀取顯示圖片

import cv2
img = cv2.imread('img.jpg')
cv2.imshow('img', img)  # 圖片顯示
cv2.waitKey()  # 括號內(nèi)的輸入控制imshow的持續(xù)時間

其中waitKey()表示等待用戶按鍵,若不加這句,則圖片顯示一閃而過。

cv2讀取的圖片即img為numpy.ndarray,大小即為(w,h,c)。

2. PIL讀取顯示圖片

from PIL import Image
image = Image.open("img.jpg")
image.show()

不需要waitKey(),圖片會持續(xù)顯示。

image為PIL格式。

3. opencv與PIL相互轉(zhuǎn)換

  • PIL轉(zhuǎn)opencv
import cv2
from PIL import Image
import numpy
image = Image.open("img.jpg")  # PIL讀取
img = cv2.cvtColor(numpy.asarray(image), cv2.COLOR_RGB2BGR)  # 轉(zhuǎn)換代碼
cv2.imshow('img', img)  # opencv顯示
cv2.waitKey()

先將PIL格式轉(zhuǎn)化為numpy.ndarray,再轉(zhuǎn)換成BGR通過opencv顯示,opencv用的都是BGR格式。

  • opencv轉(zhuǎn)PIL
import cv2
from PIL import Image
img = cv2.imread('img.jpg')  # opencv讀取
image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  # 轉(zhuǎn)換代碼
image.show()  # PIL顯示

先將numpy由BGR轉(zhuǎn)成RGB,再轉(zhuǎn)成PIL格式顯示

4. 保存圖片

  • opencv保存–imwrite()
import cv2
img = cv2.imread('img.jpg')
cv2.imwrite('XXX.jpg', img)  # 保存為XXX.jpg
  • PIL保存–save()
from PIL import Image
image = Image.open("img.jpg")
image.save('XXX.jpg')  # 保存為XXX.jpg

PIL圖片與OpenCV圖片的相互轉(zhuǎn)換

PIL圖片與 OpenCV圖片的相互轉(zhuǎn)換是通過數(shù)組格式轉(zhuǎn)換的。

通過 type() 函數(shù),我們可以觀察到通過 cv2.imread()函數(shù)得到的圖片格式為 numpy.ndarray;

通過 Image.open()函數(shù)得到的圖片格式為 PIL.JpegImagePlugin.JpegImageFile,而在 Image中存在通過數(shù)組格式加載圖像的方法 Image.fromarray。

因此,以數(shù)組格式作為中間者可實現(xiàn) PIL圖片與 OpenCV圖片之間的相互轉(zhuǎn)換,

代碼如下:

import cv2
import numpy as np
from PIL import Image
def load_img_by_cv(file):
    return cv2.imread(file)
def load_img_by_PIL(file):
    return Image.open(file)
def cv2PIL(img_cv):
    return Image.fromarray(cv2.cvtColor(img_cv,cv2.COLOR_BGR2RGB))
def PIL2cv(img_pil):
    return cv2.cvtColor(np.asarray(img_pil),cv2.COLOR_RGB2BGR)

注意通過 cv2 加載的圖片,默認色道格式為 BGR ,可通過 cv2.cvtColor 函數(shù)進行轉(zhuǎn)換;通過 PIL 加載的圖片,默認色道格式為 RGB ,可通過圖像的 convert 方法進行轉(zhuǎn)換。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論