我有一个文件夹,其中包含12个视频,每一个是21秒,他们都是相同的(副本彼此),我想提取他们的每一帧,并写入磁盘作为JPG图像,因为这是一个繁重的工作,我试图并行提取帧为
import os
import uuid
import cv2
from multiprocessing import Pool
from functools import partial
import time
def poolvid(wrtpth, pth):
cap = cv2.VideoCapture(pth)
while cap.isOpened():
ret, frame = cap.read()
if ret:
cv2.imwrite(wrtpth + '/' + str(uuid.uuid4()) + '.jpg', frame)
else:
break
def pooldo():
pth = '/media/mark/m/op1/vid'
wrtpth = '/media/mark/m/op1/im12'
listfiles = os.listdir(pth)
apth = [os.path.abspath(pth + '/' + x) for x in listfiles]
func = partial(poolvid, wrtpth)
pool = Pool(processes=2)
pool.map(func, apth)
s = time.time()
pooldo()
print (time.time()-s)
`
我希望这段代码能将执行时间缩短一半左右,因为我使用了2个进程,但是上面代码的输出大约是53,而按顺序提取帧是66,那么问题是什么呢?如何解决
目前没有回答
相关问题 更多 >
编程相关推荐