循环播放视频和保存帧的最快方式

问题描述 投票:0回答:1

我需要在一个过程中从视频中提取帧和地标,然后在另一个过程中对帧和地标进行操作。最有效的方法是什么?

现在,我将帧作为数组存储在列表中,然后对该列表进行酸洗。代码如下:

frames, landmarks = [], []
cap = cv2.VideoCapture(path)
while cap.isOpened():
    success, frame = cap.read()
    lm = get_landmarks(frame)
    frames.append(frame)
    landmarks.append(lm)

frame_pickle = open(f"frames.pkl", "wb")
landmarks_pickle = open(f"landmarks.pkl", "wb")
pickle.dump(data_out, frame_pickle)
pickle.dump(frame_number_out, landmarks_pickle)

这行得通,但速度很慢。无论如何我可以加快速度/提高效率吗?

python loops opencv computer-vision pickle
1个回答
0
投票

假设您的

get_landmarks
功能执行面部识别,实际上没有任何方法可以加快速度。您可以尝试通过创建线程批次来对其进行多线程处理,以并行处理。除此之外,您的主要瓶颈似乎是
get_landmarks
功能。

© www.soinside.com 2019 - 2024. All rights reserved.