У меня есть скрипт, который открывает файл .mp4 с помощью cv2. У меня около 1500 кадров, и я хочу поработать над ними. Я полагаю, что самой медленной частью моего кода является фактическое открытие фреймов, а не вычисления, выполненные с ними. Есть ли способ, которым я могу ускорить это? Я изучил многопоточность и многопоточность, но мне не повезло.
import cv2, os
import numpy as np
waves = {}
# Opens the Video file
cap=cv2.VideoCapture('8atpo.mp4')
num_of_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) #1586
def open_frame(frame_no):
while(cap.isOpened()):
cap.set(1,frame_no)
ret, frame = cap.read()
if ret == False:
break
# frame consists of 1078 arrays. One for each height pixel.
# each array consists of 1360 arrays. One for each width pixel.
# each array consits of 3 values. RGB??
return frame
def read_box(frame_no, nx1=0,nx2=2016,ny1=0,ny2=1600):
cframe = open_frame(frame_no) # two slowest parts
pframe = open_frame(frame_no - 1) # two slowest parts
diff_frame = cframe[nx1:nx2, ny1:ny2] - pframe[nx1:nx2, ny1:ny2]
return np.mean(diff_frame)