ความแตกต่างหลักคือลำดับช่องสี (color channel): Matplotlib (plt.imread) อ่านภาพเป็น RGB ในขณะที่ OpenCV (cv2.imread) อ่านเป็น BGR (สลับสีแดง-น้ำเงิน) ทำให้ภาพจาก cv2 แสดงผิดสีหากพลอตด้วย plt.imshow โดยไม่แปลง
ขั้นตอนการทดสอบ
- ตั้งค่าขนาดรูปและเลย์เอาต์
- สร้างซับพลอต 1 แถว 2 คอลัมน์
- อ่านภาพด้วย cv2 แสดงด้านซ้าย (จะผิดสี)
- อ่านภาพด้วย plt.imread แสดงด้านขวา (สีถูกต้อง)
- ปิดแกนและแสดงตำนาน
ตัวอย่างโค้ด
import cv2
from matplotlib import pyplot as plt, image
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
filename = "bird.jpg"
plt.subplot(121)
img = cv2.imread(filename)
plt.axis("off")
plt.imshow(img)
plt.title("with cv2 (BGR)")
plt.subplot(122)
img = image.imread(filename)
plt.axis("off")
plt.imshow(img)
plt.title("with plt (RGB)")
plt.show()
ผลลัพธ์

หมายเหตุ
หากใช้ cv2.imread ต้องแปลงสีด้วย cv2.cvtColor(img, cv2.COLOR_BGR2RGB) ก่อนพลอตด้วย Matplotlib