画像読み込み時の OpenCV カラー変換の不一致
Python OpenCV を使用してカラー画像を読み込み、表示しようとすると、予期しない色の偏差が発生する可能性があります結果の画像で。この問題は、OpenCV と Matplotlib ライブラリの間のデフォルトの色の順序付けスキームの違いが原因で発生します。
問題の説明
ユーザーが提供したコードには、色のロードが含まれています。 OpenCV の cv2.imread() 関数を使用して画像を取得し、 cv2.cvtColor() を使用してグレースケールに変換します。その後、元のイメージとグレースケール イメージの両方が、Matplotlib の plt.imshow() 関数を使用してプロットされます。 IMREAD_COLOR フラグを使用しているにもかかわらず、プロットされたイメージでは歪んだ色が表示されます。
根本的な問題
デフォルトでは、OpenCV は青、緑、赤 (BGR) の色の順序を使用します。画像は、Matplotlib が赤、緑、青 (RGB) を使用します。 OpenCV によってロードされた画像が Matplotlib で表示されると、チャネルが反転され、色の不一致が生じます。
解決策
この問題を解決するには、ユーザーが明示的に行うことができます。 cv2.cvtColor() 関数を使用して、OpenCV からロードされた BGR イメージを RGB に変換します。変換された RGB イメージは、Matplotlib でのプロットに使用できます。
<code class="python">import cv2 import matplotlib.pyplot as plt # Load image in BGR img = cv2.imread('lena_caption.png', cv2.IMREAD_COLOR) # Convert BGR to RGB RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # Plot RGB image in Matplotlib plt.imshow(RGB_img) plt.title('Original Image in RGB') plt.xticks([]), plt.yticks([]) plt.show()</code>
以上が提供されたテキストの内容に適合する、質問ベースのタイトルをいくつか示します。 * **Matplotlib でプロットすると OpenCV イメージが異なって見えるのはなぜですか?** * **次の場合に色の不一致が発生するのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。