plt.imshow和cv2.imshow有什么区别?

24
为什么使用plt.imshowcv2.imshow()调用同一张图片时,输出结果会有差异?
这是我的代码:
import cv2
import numpy as np
from matplotlib import pyplot as plt

src=cv2.imread('fruits1.jpg') # Source image

plt.subplot(211),plt.imshow(src),plt.title('image')
plt.xticks([]),plt.yticks([])
plt.show()

cv2.imshow('image',src)
cv2.waitKey(0)
cv2.destroyWindow()

这是来自 plt.imshow 的图片:

plt.imshow的图片输出

第二张图片是原始图片:

cv2.show的图片输出

是否需要对 plt.imshow() 进行修改?


OpenCV使用BGR通道顺序,但matplotlib使用RGB。因此,在从一个到另一个时需要进行通道反转排序。 - fmw42
3个回答

35

由于OpenCV存储图像的顺序为BGR而不是RGB。

尝试使用plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

有一个示例,请参见这里



1

您可以选择使用以下方法:

plt.imshow(cv2.cvtColor(image,cv2.COLOR_BGR2RGB))
                        OR
plt.imshow(image[:,:,::-1])  # here we are reversing the channel order

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接