【问题标题】:Saving video from camera get syntax error从相机保存视频得到语法错误
【发布时间】:2020-08-27 12:50:14
【问题描述】:

我正在尝试将面部摄像头的视频保存在我的目录中。

我认为我所做的一切都是正确的。 但是我在变量声明中遇到语法错误。

这是错误

回溯(最近一次通话最后一次): 文件“camera1.py”,第 15 行,在 cv2.imshow('帧', 帧) cv2.error:OpenCV(4.2.0)/Users/travis/build/skvark/opencv-python/opencv/modules/highgui/src/window.cpp:376:错误:(-215:断言失败)size.width> 0 && size.height>0 in function 'imshow' ^

  1 from cv2 import *
  2 
  3 cap = cv2.VideoCapture()
  4 
  5 width = int(cap.get((cv2.CAP_PROP_FRAME_WIDTH))))
  6 height = int(cap.get((cv2.CAP_PROP_FRAME_HEIGHT)))
  7 
  8 writer = cv2.VideoWriter('mysupervideo.mp4', cv2.VideoWriter_fourcc(*'XVID'), 20, (width, height))
  9                                                                                                                  
 10 while True:
 11     ret, frame = cap.read()
 12     writer.write(frame)
 13     cv2.imshow('frame', frame)
 14 
 15     if cv2.waitKey(1) & 0xFF == ord('q'):
 16         break
 17 
 18 cap.release()
 19 writer.release()
 20 cv2.destroyAllWindows()                                                                                                                                                                                                                                                                        

感谢您的帮助

【问题讨论】:

  • 您在第 6 行的末尾缺少一个 )(或者可以说,当您应该在该行上添加一个 ( 时,您有一个 (()。
  • 抱歉打错了
  • 这很可能是因为 cv2.CAP_PROP_FRAME_WIDTHcv2.CAP_PROP_FRAME_HEIGHT 的默认值为零。您可以手动指定宽度和高度。例如 640 和 480。
  • 如何设置

标签: python python-3.x opencv computer-vision


【解决方案1】:

上面的代码sn-p有多个问题。

1) 第5行末尾多了一个括号,应该是:

width = int(cap.get((cv2.CAP_PROP_FRAME_WIDTH)))

2) 您在这里得到的错误是因为在第 5 行和第 6 行中,您得到的宽度和高度值是“0 和 0”。这是因为在上面第 3 行的代码中,您正在创建“cap”对象,但它没有从相机捕获,因此高度宽度为 0、0。而是将行修改为:

cap = cv2.VideoCapture(0)

此 (0) 表示从相机捕获。因此您将获得适当的宽度和高度。

3) 我运行了以下代码 sn-p,它对我有用,它会在当前工作目录中转储结果视频“mysupervideo.mp4”:

from cv2 import *
cap = cv2.VideoCapture(0)
width = int(cap.get((cv2.CAP_PROP_FRAME_WIDTH)))
height = int(cap.get((cv2.CAP_PROP_FRAME_HEIGHT)))
print(width, height)
writer = cv2.VideoWriter('mysupervideo.mp4', cv2.VideoWriter_fourcc(*'XVID'), 20, (width, height))
while True:
    ret, frame = cap.read()
    writer.write(frame)
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
writer.release()
cv2.destroyAllWindows()  

【讨论】:

    猜你喜欢
    • 2018-05-09
    • 2015-05-12
    • 1970-01-01
    • 2023-03-31
    • 2013-09-03
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多