OpenCV默认使用BGR颜色通道顺序来读取和显示图片,而matplotlib使用的是RGB颜色通道顺序。当你直接使用cv2.imwrite保存由matplotlib处理的图片数组时,如果直接保存,OpenCV可能会按照BGR顺序解释数据,导致颜色不正确。
解决方法:
在保存图片之前,将图片从RGB转换为BGR。可以使用numpy的ndarray.transpose方法或者cv2.cvtColor方法进行转换。
python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 假设img是从matplotlib获取的图像数据
img = plt.imread('your_image.png') # 读取图片,这里已经是RGB格式
# 转换为BGR格式
img_bgr = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
# 现在保存图片
cv2.imwrite('output_image.png', img_bgr)