我不熟悉python中的多处理。我想从每帧一小时长的视频文件中提取特征。处理每一帧需要30毫秒的时间。我认为多处理是一个好主意,因为每一帧的处理都独立于所有其他帧。在
我想将特征提取的结果存储在一个自定义类中。在
我读了一些例子,最后按照建议使用了多处理和队列here。结果是令人失望的,现在每个帧需要大约1000毫秒来处理。我猜我的开销很大。在
有没有更有效的方法来并行处理帧并收集结果?在
为了说明这一点,我举了一个虚拟的例子。在import multiprocessing as mp
from multiprocessing import Process, Queue
import numpy as np
import cv2
def main():
#path='path\to\some\video.avi'
coordinates=np.random.random((1000,2))
#video = cv2.VideoCapture(path)
listOf_FuncAndArgLists=[]
for i in range(50):
#video.set(cv2.CAP_PROP_POS_FRAMES,i)
#img_frame_original = video.read()[1]
#img_frame_original=cv2.cvtColor(img_frame_original, cv2.COLOR_BGR2GRAY)
img_frame_dummy=np.random.random((300,300)) #using dummy image for this example
frame_coordinates=co