我在python初學者也OpenCV中。我想用opencv的視頻捕捉功能拍攝一段時間的視頻,比如說10秒,然後系統進入睡眠模式一段時間,比如說6秒,然後拍攝10秒的視頻。兩個視頻都應該保存在單獨的文件中。我的問題是,當我打電話第一個功能它保存第一個視頻,但在視頻2功能調用它不保存video.sorry不好的代碼安排。我是新用戶。下拍攝視頻
import cv2
import time
def delay(delay_time):
timeout = delay_time # [seconds]
timeout_start = time.time()
print(time.strftime("%c"))
while time.time() < timeout_start + timeout:
test = 0
if test == 3:
break
test -= 1
print(time.strftime("%c"))
def video1():
cap = cv2.VideoCapture(0)
if (cap.isOpened() == False):
print("Unable to read camera feed")
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
out = cv2.VideoWriter('Data/output1.avi',
cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10, (frame_width, frame_height))
while time.time() < time_start + closing_time:
ret, frame = cap.read()
if ret == True:
out.write(frame)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
def video2():
cap = cv2.VideoCapture(0)
if (cap.isOpened() == False):
print("Unable to read camera feed")
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
out = cv2.VideoWriter('Data/output2.avi',
cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10, (frame_width, frame_height))
while time.time() < time_start + closing_time:
ret, frame = cap.read()
if ret == True:
out.write(frame)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
cv2.destroyAllWindows()
print(time.strftime("%c"))
video1()
delay(6)
print(time.strftime("%c"))
video2()
沒有太多的分析:你有一個恆定的輸出文件。所以是的,當然你不會看到多個輸出文件。您需要在循環中使用不同的文件名(並可能重構創建文件處理程序的位置)。 – sascha
我有兩個功能節省2 videos.first視頻正常打開,但第二個文件出現在文件夾中的首部影片正常打開,但在開說不能解複用流 –
請修改代碼以刪除所有的意見,然後我們可以看到,如果有保存第一個視頻文件和第二個視頻文件的任何差異。同時做這兩個功能視頻1,視頻2執行保存視頻相同的行動? –