簡體   English   中英

從相機保存視頻得到語法錯誤

[英]Saving video from camera get syntax error

我正在嘗試將面部攝像頭的視頻保存在我的目錄中。

我認為我做的一切都是正確的。 但是我在變量聲明中遇到語法錯誤。

這是錯誤

回溯(最后一次調用):文件“camera1.py”,第 15 行,在 cv2.imshow('frame', frame) cv2.error: OpenCV(4.2.0) /Users/travis/build/skvark/opencv- python/opencv/modules/highgui/src/window.cpp:376: 錯誤: (-215:Assertion failed) 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()                                                                                                                                                                                                                                                                        

謝謝你的幫助

上述代碼片段存在多個問題。

1)第5行末尾有多余的括號。應該是:

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

2) 你在這里得到的錯誤是因為在第 5 行和第 6 行你得到的寬度和高度的值是“0 和 0”。 這是因為在上面第 3 行的代碼中,您正在創建“cap” object 但它沒有從相機捕獲,因此高度寬度為 0、0。而是將行修改為:

cap = cv2.VideoCapture(0)

這 (0) 表示從相機捕獲。 因此您將獲得適當的寬度和高度。

3)我運行了以下代碼片段,它對我有用,它在當前工作目錄中轉儲了結果視頻“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()  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM