詳解OpenCV和PIL讀取和顯示圖像的差異
本博客演示使用OpenCV和PIL讀取和顯示圖像的差異。
首先來看一下原始的bgr圖像 src.jpg
1. 使用cv2讀取src.jpg并轉(zhuǎn)為rgb格式的src_rgb.jpg并顯示和保存
#首先讀入并保存為rgb圖像 src_path = 'C:\\Users\\Administrator\\Desktop\\cv2_PIL\\src.png' # bgr img = cv2.imread(src_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) cv2.imshow('src_rgb.png', img) cv2.imwrite('src_rgb.png', img) cv2.waitKey(5000)
2. 使用cv2讀取src_rgb.jpg并顯示, 發(fā)現(xiàn)仍為rgb格式
# 讀入rgb格式的圖像并保存 src_path = 'C:\\Users\\Administrator\\Desktop\\cv2_PIL\\src_rgb.png' # rgb img = cv2.imread(src_path) cv2.imshow('src_rgb.png', img) cv2.waitKey(5000)
由此可見cv2讀取bgr格式圖片為bgr格式讀入;讀取rgb格式圖片為rgb格式讀入。
3. 使用PIL讀取src.jpg并顯示
# 使用PIL讀取bgr格式圖片并顯示 src_path = 'C:\\Users\\Administrator\\Desktop\\cv2_PIL\\src.png' # bgr img = Image.open(src_path)#.convert("RGB") print(img.mode) img.show("src.png")
由此可見PIL讀入bgr格式圖片為讀入后是rgb格式
4. 使用PIL讀取src.jpg并轉(zhuǎn)為numpy的array格式圖片并顯示
# 使用PIL讀取bgr格式圖片并顯示 src_path = 'C:\\Users\\Administrator\\Desktop\\cv2_PIL\\src.png' # bgr img = Image.open(src_path)#.convert("RGB") print(img.mode) img = np.array(img) # rgb cv2.imshow("src.png",img) cv2.waitKey(5000)
所以進一步坐實了PIL讀入bgr格式圖片為讀入后是rgb格式
5. 使用PIL讀取rgb格式src_rgb.jpg并顯示
# 使用PIL讀取rgb格式圖片并顯示 src_path = 'C:\\Users\\Administrator\\Desktop\\cv2_PIL\\src_rgb.png' # rgb img = Image.open(src_path)#.convert("RGB") print(img.mode) # img1 = img.load() # print(img1[0,0]) #img.show() img = np.asarray(img) # bgr #print(img) cv2.imshow("src_.png",img) cv2.waitKey(5000)
可見PIL讀入rgb順序圖片后雖然為RGB格式,但是其實通道順序為BGR格式圖片
總結(jié):
cv2讀取BGR圖片 | img = cv2.imread('src.png'),其中img為BGR通道順序的圖片 |
cv2讀取RGB圖片 | img = cv2.imread('src.png'),其中img為RGB通道順序的圖片 |
PIL讀入BGR圖片 | img = Image.open('src.png'),顯示img為RGBA格式,其中img為RGBA通道順序的圖片; img = img.convert('RGB')后,img為RGBA通道順序的圖片 |
PIL讀入RGB圖片 | img = Image.open('src_rgb.png'),雖然顯示img為RGB格式,但是img為通道順序為BGR格式的圖片。 |
到此這篇關(guān)于詳解OpenCV和PIL讀取和顯示圖像的差異的文章就介紹到這了,更多相關(guān)OpenCV和PIL讀取和顯示圖像 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pycharm 創(chuàng)建 Django admin 用戶名和密碼的實例
今天小編就為大家分享一篇Pycharm 創(chuàng)建 Django admin 用戶名和密碼的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05解決windows上安裝tensorflow時報錯,“DLL load failed: 找不到指定的模塊”的問題
這篇文章主要介紹了解決windows上安裝tensorflow時報錯,“DLL load failed: 找不到指定的模塊”的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05