如何在Python中使用cv2显示图像

时间:2016-01-23 17:28:39

标签: python opencv matplotlib

我一直在使用代码来显示电影中的帧。代码的基本内容如下:

import cv2
import matplotlib.pyplot as plt

# Read single frame avi
cap = cv2.VideoCapture('singleFrame.avi')
rval, frame = cap.read()

# Attempt to display using cv2 (doesn't work)
cv2.namedWindow("Input")
cv2.imshow("Input", frame)

#Display image using matplotlib (Works)
b,g,r = cv2.split(frame)
frame_rgb = cv2.merge((r,g,b))
plt.imshow(frame_rgb)
plt.title('Matplotlib') #Give this plot a title, 
                        #so I know it's from matplotlib and not cv2
plt.show()

因为我可以使用matplotlib显示图像,所以我知道我已经成功阅读了它。

我不明白为什么我创建窗口并尝试使用cv2显示图像不起作用。没有cv2窗口出现。奇怪的是,如果我创建第二个cv2窗口,会出现“输入”窗口,但它只是一个空白/白色窗口。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:14)

据我所知,你做得差不多好。缺少一件事:

cv2.imshow('image',img)
cv2.waitKey(0)

所以可能你的窗口出现但很快就关闭了。

答案 1 :(得分:0)

在使用Jupyter Notebook时,这可能会派上用场

import cv2
import matplotlib.pyplot as plt

# reading image
image = cv2.imread("Path of image here")

# displaying image
plt.imshow("Image",image)
cv2.waitKey(0)
plt.show()

答案 2 :(得分:0)

您可以按照以下代码

import cv2
#reading Image 
image = cv2.imread('path to your image')
#show you image ,provide window name first
cv2.imshow('image window',image)
#add wait key. window waits till user press any key
cv2.waitKey(0)
#and finally destroy/Closing all open windows
cv2.destoyAllWindows() 

我认为您的工作就完成了