日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

为什么matplotlib显示opencv图像不正常

發布時間:2025/3/20 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么matplotlib显示opencv图像不正常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前面的《數字圖像的加載、顯示和輸出》中提到,opencv對多個圖片輸出在同一個窗口并沒有直接的支持手段,但有時候我們會有這個需求,這時可以用matplotlib搭配使用。

下面將4張圖片放在一個窗口中顯示。原始圖像如下:

使用matplotlib將4幅圖像顯示在一個窗口的代碼如下:

# coding=utf-8 import cv2 import matplotlib.pyplot as pltscooter_path = "scooter.png" # 帶alpha通道的彩色圖像 lenna_path = "lenna.bmp" # 3通道彩色圖像 baboon_path = "baboon.bmp" # 3通道彩色圖像 moon_path = "moon.bmp" # 灰度圖像pic = [scooter_path, lenna_path, baboon_path, moon_path] plt.figure(figsize=(8, 6))for i in range(4):img = cv2.imread(pic[i])plt.subplot(2, 2, i + 1)plt.imshow(img)plt.title(pic[i]) plt.show()

顯示如下:

可以看出,圖像的顏色顯示不正常。

這是因為matplotlib使用的顏色模式是我們現在流行的RGB模式,而opencv使用的是BGR模式,即RGB的倒序模式,與我們通常的RGB是反向的。因此在使用matplotlib顯示之前需要做一下圖像顏色的轉換。
注意下面代碼中如下這一行:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

import cv2 import matplotlib.pyplot as pltscooter_path = "scooter.png" # 帶alpha通道的彩色圖像 lenna_path = "lenna.bmp" # 3通道彩色圖像 baboon_path = "baboon.bmp" # 3通道彩色圖像 moon_path = "moon.bmp" # 灰度圖像pic = [scooter_path, lenna_path, baboon_path, moon_path] plt.figure(figsize=(8, 6))for i in range(4):img = cv2.imread(pic[i])img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 注意這行。plt.subplot(2, 2, i + 1)plt.imshow(img)plt.title(pic[i]) plt.show()

再次輸出,這次正常了:

那么問題來了,為什么opencv要采用BGR順序的模式呢?這又是因為歷史原因,早期的opencv開發者采用了BGR順序,所以一直遺留下來了。那么早期的opencv開發者為什么要用BGR呢,因為那時的許多照相機生產廠家和軟件開發商就是采用的BGR模式。

總結

以上是生活随笔為你收集整理的为什么matplotlib显示opencv图像不正常的全部內容,希望文章能夠幫你解決所遇到的問題。

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