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