為什麼 OpenCV 載入的圖像在 Matplotlib 中顯示的顏色不準確?

Mary-Kate Olsen
發布: 2024-10-24 18:44:49
原創
649 人瀏覽過

Why Do OpenCV-Loaded Images Display Inaccurate Colors in Matplotlib?

OpenCV 顏色差異:解決載入影像和繪製影像之間的差異

當利用OpenCV 載入彩色影像並使用Matplotlib 顯示它們時,它不是顯示顏色差異的情況並不常見。這是由於 OpenCV 和 Matplotlib 之間預設顏色順序的差異所造成的。

OpenCV 以藍綠紅 (BGR) 格式儲存影像,而 Matplotlib 期望以紅綠藍 (RG​​B) 格式儲存影像格式。在 Matplotlib 中顯示使用 OpenCV 載入的影像時,顏色通道會反轉,導致顏色不正確。

解決方案:將 BGR 轉換為 RGB

要修正此問題,我們需要使用OpenCV的cvtColor函數將載入的映像從BGR顯式轉換為RGB。

<code class="python">RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)</code>
登入後複製

透過在Matplotlib圖中使用RGB_img而不是原始img,我們確保顏色順序符合Matplotlib的期望,顏色顯示正確。

更新程式碼

<code class="python">import cv2
import matplotlib.pyplot as plt

# Load image with BGR order (default for OpenCV)
img = cv2.imread('lena_caption.png', cv2.IMREAD_COLOR)

# Convert BGR to RGB for compatibility with Matplotlib
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Create grayscale image
bw_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Create figure for plotting
fig, axes = plt.subplots(1, 2)

# Plot original image with corrected color order
axes[0].imshow(RGB_img)
axes[0].set_title('Original Image (RGB)')
axes[0].set_xticks([]); axes[0].set_yticks([])

# Plot grayscale image
axes[1].imshow(bw_img, cmap='gray')
axes[1].set_title('BW Image')
axes[1].set_xticks([]); axes[1].set_yticks([])

plt.show()</code>
登入後複製

以上是為什麼 OpenCV 載入的圖像在 Matplotlib 中顯示的顏色不準確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!