您好,登錄后才能下訂單哦!
這篇文章主要講解了如何比較和相互轉換PIL.Image.open和cv2.imread,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
摘要
PIL.Image.open讀入的是RGB順序,而opencv中cv2.imread讀入的是BGR通道順序 。cv2.imread會顯示圖片更藍一些。
cv2.imread(path,讀取方式)方法
第一個參數是圖片的路徑。
第二個參數是讀取方式:cv2.IMREAD_COLOR:讀入一副彩色圖片;cv2.IMREAD_GRAYSCALE:以灰度模式讀入圖片;cv2.IMREAD_UNCHANGED:讀入一幅圖片,并包括其alpha通道。
默認為cv2.IMREAD_COLOR。
返回值是(height,width,channel)數組,channel的順序是BGR順序。
例:
import cv2 from PIL import Image imagePath='4.jpg' import matplotlib.pyplot as plt cvImage=cv2.imread(imagePath) print(cvImage.shape) plt.subplot(121) plt.imshow(cvImage) plt.show()
PIL.Image.open(path)方法
參數:圖片的路徑
返回值: <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=374x288 at 0x13EA15F7808>
需要用img=np.array(img)做轉換,才能看到shape屬性,是(height,width,channel)數組,channel的通道順序為RGB。
例:
from PIL import Image import numpy as np imagePath='4.jpg' import matplotlib.pyplot as plt ''' cvImage=cv2.imread(imagePath) print(cvImage.shape) plt.subplot(121) plt.imshow(cvImage) plt.show() ''' img=Image.open(imagePath) img=np.array(img) print(img.shape) plt.imshow(img) plt.show()
二者之間的相互轉化
主要用到的函數cv2.cvtColor(p1,p2) 是顏色空間轉換函數,p1是需要轉換的圖片,p2是轉換成何種格式。
本例用到的格式是cv2.COLOR_RGB2BGR和cv2.COLOR_BGR2RGB
代碼:
def PILImageToCV(imagePath): # PIL Image轉換成OpenCV格式 img = Image.open(imagePath) plt.imshow(img) img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR) plt.imshow(img) plt.show() def CVImageToPIL(imagePath): # OpenCV圖片轉換為PIL image img = cv2.imread(imagePath) plt.imshow(img) img2 = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.imshow(img2) plt.show()
判斷圖像數據是否是OpenCV格式:
isinstance(img, np.ndarray)
看完上述內容,是不是對如何比較和相互轉換PIL.Image.open和cv2.imread有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。