ホームページ >バックエンド開発 >Python チュートリアル >OpenCV で読み込まれた画像が Matplotlib で不正確な色を表示するのはなぜですか?
OpenCV の色の不一致: ロードされたイメージとプロットされたイメージ間の不一致の解決
OpenCV を利用してカラー イメージをロードし、Matplotlib を使用して表示する場合、解決されません。表示される色に差異が生じることはまれです。これは、OpenCV と Matplotlib のデフォルトの色の順序の違いによるものです。
OpenCV は画像を青-緑-赤 (BGR) 形式で保存しますが、Matplotlib は画像を赤-緑-青 (RGB) 形式で保存します。形式。 OpenCV でロードされた画像を Matplotlib で表示すると、カラー チャネルが反転され、正しくない色が表示されます。
解決策: BGR を RGB に変換する
この問題を修正するには、次のようにします。 OpenCV の cvtColor 関数を使用して、ロードされたイメージを BGR から RGB に明示的に変換する必要があります。
<code class="python">RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)</code>
元の img の代わりに Matplotlib プロットで RGB_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 中国語 Web サイトの他の関連記事を参照してください。