plt.show 和 cv2.imshow 的区别?

Posted

技术标签:

【中文标题】plt.show 和 cv2.imshow 的区别?【英文标题】:Difference between plt.show and cv2.imshow? 【发布时间】:2016-11-30 14:06:50 【问题描述】:

为什么使用plt.show&cv2.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.show的图片:

第二张是原图:

plt.show() 是否需要进行一些修改?

【问题讨论】:

【参考方案1】:
                            OpenCV - BGR and Matplotlib - RGB

OpenCV:

https://docs.opencv.org/2.4/doc/tutorials/introduction/display_image/display_image.html

Matplotlib:

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.imshow.html

【讨论】:

【参考方案2】:

因为 OpenCV 以 BGR 顺序而不是 RGB 存储图像。

试试plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

有关示例,请参阅 here。

【讨论】:

以上是关于plt.show 和 cv2.imshow 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我用pycharm的cv2.imshow会报错,一直没有解决,要自闭了?

plt.imshow与cv2.imshow显示颜色问题

cv2.imshow 图像窗口放置在可视屏幕之外

cv2.imshow 错误“功能未实现”

cv2.imshow() 在 Mac 上崩溃

cv2.imshow() 函数抛出断言错误