ホームページ >バックエンド開発 >Python チュートリアル >OpenCV で読み込まれた画像が Matplotlib で不正確な色を表示するのはなぜですか?

OpenCV で読み込まれた画像が Matplotlib で不正確な色を表示するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 18:44:49742ブラウズ

Why Do OpenCV-Loaded Images Display Inaccurate Colors in 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。