【问题标题】:Capturing a single frame with Python (using a webcam)使用 Python 捕获单帧(使用网络摄像头)
【发布时间】:2017-12-15 02:01:03
【问题描述】:

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

代码 -

import cv2


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

截图 - https://imgur.com/kfeXYvQ

我的网络摄像头是 USB,720p,30fps。

谢谢。

【问题讨论】:

    标签: python image opencv webcam


    【解决方案1】:

    两件事之一。可能是您需要在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(); print(retval)?如果img2.png 是黑色的,则表明这是您的相机连接问题,而不是imshow。您可以使用其他方法访问网络摄像头吗? Skype、Photobooth 之类的?
    • retval 显示为真。摄像头可与其他任何设备配合使用,例如 Skype 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多