采用:python多进程
实测:
cpu:i7-9700
92秒 13456张,
平均约每秒146张
import multiprocessing as mp
import os
import cv2
import sys
import time
def git_img(path: str, n: int, len_n: int,
name: str, suffix: str, save_path: str,
frames: str) -> None:
"""
:param path:完整视频文件路径
:param n: 起始帧数
:param len_n: 终止帧数
:param name: 保存图像文件名
:param suffix: 保存文件名后缀
:param save_path: 保存图像文件路径
:param frames: 隔几帧 保存
:return: None
"""
cap = cv2.VideoCapture(path)
cap.set(cv2.CAP_PROP_POS_FRAMES, n)
l = n
l1 = 0
while len_n > l:
l += 1
ret, frame = cap.read()
if l1 == frames:
print(len_n, l, "计数")
l1 = 0
cv2.imwrite(save_path + name + str(l) + suffix, frame)
l1 += 1
cv2.destroyAllWindows()
path = "./01.mp4"
save_path = "./images/"
frames = 1
suffix = '.jpg'
name = '2022_'
cap = cv2.VideoCapture(path)
cap_len = cap.get(7)
cv2.destroyAllWindows()
cpu_len = os.cpu_count()
Average = int(cap_len / cpu_len)
list_process = []
for i in range(cpu_len):
list_process.append(git_img)
if __name__ == '__main__':
t1 = time.time()
jobs = []
start, Termination = 0, Average
for i in list_process:
pw = mp.Process(target=i, args=(path, start, Termination, name, suffix, save_path, frames))
start += Average
Termination += Average
pw.start()
jobs.append(pw)
for i1 in jobs:
i1.join()
print("所有进程结束")
t2 = time.time()
print("以上代码运行时长:", t2 - t1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)