微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

优化Opencv代码保存视频Python

如何解决优化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 举报,一经查实,本站将立刻删除。