>  기사  >  백엔드 개발  >  OpenCV로 로드된 이미지가 Matplotlib에서 부정확한 색상을 표시하는 이유는 무엇입니까?

OpenCV로 로드된 이미지가 Matplotlib에서 부정확한 색상을 표시하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 18:44:49649검색

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

OpenCV 색상 불일치: 로드된 이미지와 플롯된 이미지 간의 불일치 해결

OpenCV를 활용하여 컬러 이미지를 로드하고 Matplotlib를 사용하여 표시할 때 표시된 색상에 차이가 발생하는 경우는 드뭅니다. 이는 OpenCV와 Matplotlib의 기본 색상 순서가 다르기 때문입니다.

OpenCV는 이미지를 Blue-Green-Red(BGR) 형식으로 저장하는 반면 Matplotlib에서는 이미지를 Red-Green-Blue(RGB)로 예상합니다. 체재. Matplotlib에서 OpenCV로 로드된 이미지를 표시할 때 색상 채널이 반전되어 잘못된 색상이 표시됩니다.

해결책: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.