我有这个简单的OpenCV代码来绘制图像的直方图。imshow()和matplotlib()不能一起工作
from PIL import Image
from numpy import *
from pylab import *
import cv2
image=cv2.imread('/media/755784/New Volume/DATA/Images/opencv.jpg')
h,w=image.shape[:2]
cv2.imwrite('/media/755784/New Volume/DATA/Images/result.png',image)
print h,w
cv2.imshow("Image",image)
cv2.waitKey(0)## <--
print 'Plotting histogram'
hist=cv2.calcHist(image,[0],None,[256],[0,256])
plt.hist(image.ravel(),256,[0,256])
plt.show()
while True:
k=cv2.waitKey(30)
if k==27:
break
cv2.destroyAllWindows()
当我(0)之后,imshow()删除waitKey,直方图获取第一绘图,除非您关闭的情节,不显示图像。这是python或matplotlib的特定问题吗?
你阅读文档[这里](http://docs.opencv.org/trunk/doc/py_tutorials/py_gui /py_image_display/py_image_display.html)似乎说你必须使用'waitKey'? – BrenBarn 2014-12-04 07:28:12
使用cv2.waitKey(1)##非阻塞 – berak 2014-12-04 07:29:48
我同意cv2.waitKey(1)或cv2.waitKey(0)将正确显示两个窗口,但5秒后图像窗口失去其亮度。就像蟒蛇正在失去那个窗口的焦点..当你关闭绘图窗口,图像窗口重新获得其亮度.. – 2014-12-04 08:50:55