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

Posted

技术标签:

【中文标题】如何在 Python 中使用 cv2 显示图像【英文标题】:How can one display an image using cv2 in Python 【发布时间】:2016-04-30 05:22:47 【问题描述】:

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

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 窗口,则会出现“输入”窗口,但它只是一个空白/白色窗口。

我在这里错过了什么?

【问题讨论】:

您阅读文档了吗?在cv2.imshow.. 之后尝试cv2.waitKey(0) 【参考方案1】:

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

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

所以可能你的窗口出现了,但关闭得非常非常快。

【讨论】:

【参考方案2】:

您可以按照以下代码进行操作

import cv2
# read image 
image = cv2.imread('path to your image')
# show the image, provide window name first
cv2.imshow('image window', image)
# add wait key. window waits until user presses a key
cv2.waitKey(0)
# and finally destroy/close all open windows
cv2.destroyAllWindows()

我认为你的工作已经完成了

【讨论】:

【参考方案3】:

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

import cv2
import matplotlib.pyplot as plt

# reading image
image = cv2.imread("IMAGE_PATH")

# displaying image
plt.imshow(image)
plt.show()

【讨论】:

"Image" 应该被删除。第一个参数只接受类似数组的值或 PIL 图像。【参考方案4】:

由于 OpenCV 读取 BGR 格式的图像,您需要先将其转换为 RGB 格式,然后再将图像传递给 pyplot

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('YOUR_FILEPATH')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image)
plt.show()

【讨论】:

这不是作者要求的。您正在展示如何在 matplotlib 中显示图片,而问题是关于 cv2。 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review

以上是关于如何在 Python 中使用 cv2 显示图像的主要内容,如果未能解决你的问题,请参考以下文章

使用python突出显示图像中的特定文本

python cv2教程;读图像;显示一个img;写一个图像

如何正确使用 cv2.imwrite 通过 cv2.selectROI 在 openCV 中保存图像

OpenCV的图像读取显示及保存

cv2 imshow 有时会显示黑色图像

如何在opencv python中调整PNG图像的大小? [复制]