使用Python捕获单个帧(使用网络摄像头)

使用Python捕获单个帧(使用网络摄像头),python,image,opencv,webcam,Python,Image,Opencv,Webcam,我检查了其他解决方案,但它们没有回答我的问题。 我的问题是,每当我试图从视频中只捕获一帧时(我基本上想用我的网络摄像头拍照),我只会得到一个黑色窗口 代码- import cv2 cam = cv2.VideoCapture(0) frame = cam.read()[1] cv2.imwrite('img2.png', frame) cv2.imshow("img1", frame) 截图- 我的网络摄像头是USB,720p,每秒30帧 谢谢。两件事之一。您可能需要在cv2.imsho

我检查了其他解决方案,但它们没有回答我的问题。 我的问题是,每当我试图从视频中只捕获一帧时(我基本上想用我的网络摄像头拍照),我只会得到一个黑色窗口

代码-

import cv2


cam = cv2.VideoCapture(0)
frame = cam.read()[1]
cv2.imwrite('img2.png', frame)
cv2.imshow("img1", frame)
截图-

我的网络摄像头是USB,720p,每秒30帧


谢谢。

两件事之一。您可能需要在
cv2.imshow()
之后添加一个
waitKey()
。或者,您不会检查相机返回的任何错误。这可能是一个连接问题。这里有两件事要做

import cv2

cam = cv2.VideoCapture(0)
retval, frame = cam.read()
if retval != True:
    raise ValueError("Can't read frame")

cv2.imwrite('img2.png', frame)
cv2.imshow("img1", frame)
cv2.waitKey()

waitKey()
函数会暂停程序,直到用户在窗口中输入了一个键。

它仍然不起作用……我甚至按下了一个键,然后重新启动了计算机,但我仍然得到了屏幕截图链接中显示的相同的黑色窗口。@SajjadAbbas
retval
返回了什么?在
img2.png
中会出现什么?我不知道如何看到retval返回。然而,img2实际上是全黑的,就像屏幕截图一样。@SajjadAbbas为什么不干脆
retval,frame=cam.read();打印(返回)
?如果
img2.png
为黑色,则表明是摄像头连接问题,而不是
imshow
问题。您可以使用其他方法访问网络摄像头吗?Skype,Photobooth之类的?retval证明了这一点。摄像机可以和其他任何东西一起工作,比如skype等等。