OpenCV 顏色差異:解決載入影像和繪製影像之間的差異
當利用OpenCV 載入彩色影像並使用Matplotlib 顯示它們時,它不是顯示顏色差異的情況並不常見。這是由於 OpenCV 和 Matplotlib 之間預設顏色順序的差異所造成的。
OpenCV 以藍綠紅 (BGR) 格式儲存影像,而 Matplotlib 期望以紅綠藍 (RGB) 格式儲存影像格式。在 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中文網其他相關文章!