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

izj3ouym  于 2023-03-13  发布在  Python
关注(0)|答案(5)|浏览(203)

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

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显示图像,所以我知道我成功地阅读了它。
我不明白为什么我用cv 2创建一个窗口并试图显示一个图像的尝试不起作用。没有cv 2窗口出现。奇怪的是,如果我创建第二个cv 2窗口,“输入”窗口出现,但它只是一个空白/白色窗口。
我错过了什么?

kyvafyod

kyvafyod1#

在我看来,你做得差不多了。还差一点:

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

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

ttisahbt

ttisahbt2#

可以按照以下代码操作

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()

我想你的任务完成了

jobtbby3

jobtbby33#

由于OpenCV读取BGR格式的图像,因此在将图像传递给pyplot之前,需要将其转换为RGB格式

import cv2
import matplotlib.pyplot as plt

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

ioekq8ef4#

虽然使用Jupyter笔记本这一个可能会派上用场

import cv2
import matplotlib.pyplot as plt

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

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

qlckcl4x5#

import cv2

image_path='C:/Users/bakti/PycharmProjects/pythonProject1/venv/resized_mejatv.jpg'

img=cv2.imread(image_path)

img_title="meja tv"

cv2.imshow(img_title,img)

cv2.waitKey(0)

cv2.destroyAllWindows()

相关问题