本博客演示使用OpenCV和PIL讀取和顯示圖像的差異。
首先來(lái)看一下原始的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)
由此可見(jiàn)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")
由此可見(jiàn)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)
所以進(jìn)一步坐實(shí)了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)
可見(jiàn)PIL讀入rgb順序圖片后雖然為RGB格式,但是其實(shí)通道順序?yàn)锽GR格式圖片
總結(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為通道順序?yàn)锽GR格式的圖片。 |
到此這篇關(guān)于詳解OpenCV和PIL讀取和顯示圖像的差異的文章就介紹到這了,更多相關(guān)OpenCV和PIL讀取和顯示圖像 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python讀取并顯示圖片的三種方法(opencv、matplotlib、PIL庫(kù))