如何解决优化Opencv代码保存视频Python
我编写了一个 Python 代码,其中我使用 opencv
显示和保存实时摄像机流并制作 10 分钟剪辑。
我必须为 100 多个摄像机执行此操作,但目前我正在为 5 个摄像机执行此操作(通过从单个摄像机获取多个流)。
现在,问题是我的脚本消耗了大约 12% 的 cpu 和 125 MB RAM。没有办法让它能够处理超过 100 个摄像头。所以,我想优化代码,使其消耗很少的资源,这将帮助我运行 100 个摄像头。
如果使用 opencv
无法做到这一点,我什至准备转移到其他图书馆。
代码:
# organize imports
import numpy as np
import cv2
import time
from threading import Thread
def multi_stream(video_id):
start_time = time.time()
count = 1
# This will return video from the first webcam on your computer.
cap = cv2.VideoCapture("rtsp://admin:vaaan@123@192.168.1.51/Streaming/Channels/2")
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('Output_{}/{}.avi'.format(video_id,count),fourcc,10,(640,480))
# loop runs if capturing has been initialized.
while(True):
# reads frames from a camera
# ret checks return at each frame
ret,frame = cap.read()
# output the frame
out.write(frame)
# this will help to create 10 min video clips
if time.time() - start_time >= 600:
count += 1
start_time = time.time()
out = cv2.VideoWriter('Output_{}/{}.avi'.format(video_id,480))
# The original input frame is shown in the window
cv2.imshow('Original_{}'.format(video_id),frame)
# Wait for 'a' key to stop the program
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Close the window / Release webcam
cap.release()
# After we release our webcam,we also release the output
out.release()
# De-allocate any associated memory usage
cv2.destroyAllWindows()
t1 = Thread(target=multi_stream,args=(1,))
t2 = Thread(target=multi_stream,args=(2,))
t3 = Thread(target=multi_stream,args=(3,))
t4 = Thread(target=multi_stream,args=(4,))
t5 = Thread(target=multi_stream,args=(5,))
t1.start()
t2.start()
t3.start()
t4.start()
t5.start()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。