![](/img/trans.png)
[英]Save video instead of saving images while using basler camera and python
[英]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.