[英]Read video URLs from a list for a period of time and release streams, OpenCV Python
我有一個視頻 URL 列表,我想使用 OPenCV 打開/處理。 下面的示例列表
cam_name,address
Cam_01,vid1.mp4
Cam_02,vid1.mp4
Cam_03,vid1.mp4
我想打開第一個相機/地址,stream 60秒,釋放並啟動第二個,釋放等等。 當到達列表中的最后一個 stream 例如 Cam_03 時,再次啟動列表,回到 Cam_01。
我不需要線程,我只需要啟動 stream 並在一段時間后停止等。
到目前為止的代碼:
# this calls the OpenCV stream
def main(cam_name, camID):
main_bret(cam_name, camID)
df = 'cams_list.txt'
df = pd.read_csv(df)
for index, row in df.iterrows():
main(row['cam_name'], row['address'])
########################################
main_bret(cam_name, camID):
vid = cv2.VideoCapture(camID)
while(True):
ret, frame = vid.read()
cv2.imshow(cam_name, frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
vid.release()
cv2.destroyAllWindows()
如何構建到 stream 的循環 60 秒,釋放並移至列表中的下一個..並在完成列表時重復?
現在發生的事情,例如,如果只是流式傳輸 mp4,將完成視頻,然后開始下一個。 只需要它在 60 秒后停止流式傳輸。
我嘗試在 cv2.waitKey(1) 周圍添加 sleep() 等,但它運行該期間的所有內容,而不是單個流。 我想我沒有把睡眠放在正確的地方。
tks
我不確定我是否了解您程序的每個細節,但這就是我所擁有的:
df = 'cams_list.txt'
df = pd.read_csv(df)
def main_bret(cam_name, camID):
vid = cv2.VideoCapture(camID)
ret, frame = vid.read()
cv2.imshow(cam_name, frame)
cv2.waitKey(60_000)
vid.release()
cv2.destroyAllWindows()
index = 0
upper_index = df.shape[0]
while True:
main_bret(df.iloc[index]["cam_name"], df.iloc[index]["address"])
index = index + 1
if index >= upper_index:
index = 0
我希望我是有幫助的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.