日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么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图像不正常的全部內容,希望文章能夠幫你解決所遇到的問題。

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