一、问题
在Python里使用OpenCV时,一般是通过cv2.imread读入图片,然后用plt.imshow显示图片,但最近学习OpenCV时这样做的结果与预期的结果有较大的出入。查找资料后,才明白OpenCV里的imshow()和Matplotlib.pyplot的imshow()在使用上有一些区别,不注意的话很容易就会导致很奇怪的结果。
下面的示例代码及运行结果显示了这种差异:
import cv2
import matplotlib.pyplot as plt
#以灰度模式读入图片
messi=cv2.imread('messi.jpg',0)
#使用matplotlib.pyplot的imshow显示图片
plt.imshow(messi),plt.title('messi_plt')
plt.xticks([]),plt.yticks([]) #隐藏坐标轴
plt.show()
#使用opencv的imshow显示图片
cv2.imshow('messi_cv',messi)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下:
左边是原图,中间是cv2.imshow的显示结果,右边是plt.imshow的显示结果。很明显地看到&#