如何将视频保存为列表中的帧并同时处理帧列表?
How to save video as frames in list and process the list of frames simultaneously?
我想从相机读取输入并在列表中追加帧,显示列表中的帧。在添加到列表后,代码需要花费很多时间来读取帧并显示它。
def test(source_file):
ImagesSequence=[]
i=0
capture = VideoCapture(source_file)
while(1):
ret, frame = capture.read()
while(True):
imshow('Input', frame)
ImagesSequence.append(frame)
imshow('Output',ImagesSequence[i].astype(np.uint8))
i=i+1
if cv2.waitKey(60) & 0xFF == ord('q'):
break
return ImagesSequence
test(0)
正如 Christoph 所指出的,您的程序中存在一个实际的无限循环 运行,删除它会修复您的程序。
def test(source_file):
ImagesSequence=[]
i=0
capture = cv2.VideoCapture(source_file)
while True:
ret, frame = capture.read()
cv2.imshow('Input', frame)
ImagesSequence.append(frame)
cv2.imshow('Output',ImagesSequence[i].astype(np.uint8))
i=i+1
if cv2.waitKey(1) & 0xFF == ord('q'):
break
return ImagesSequence
test(0)
from cv2 import *
import numpy as np
ImagesSequence=[]
i=0
cap = cv2.VideoCapture(0)
while True:
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('frame', frame)
ImagesSequence.append(cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY))
cv2.imshow('output', ImagesSequence[i].astype(np.uint8))
i=i+1
if cv2.waitKey(60) == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
我想从相机读取输入并在列表中追加帧,显示列表中的帧。在添加到列表后,代码需要花费很多时间来读取帧并显示它。
def test(source_file):
ImagesSequence=[]
i=0
capture = VideoCapture(source_file)
while(1):
ret, frame = capture.read()
while(True):
imshow('Input', frame)
ImagesSequence.append(frame)
imshow('Output',ImagesSequence[i].astype(np.uint8))
i=i+1
if cv2.waitKey(60) & 0xFF == ord('q'):
break
return ImagesSequence
test(0)
正如 Christoph 所指出的,您的程序中存在一个实际的无限循环 运行,删除它会修复您的程序。
def test(source_file):
ImagesSequence=[]
i=0
capture = cv2.VideoCapture(source_file)
while True:
ret, frame = capture.read()
cv2.imshow('Input', frame)
ImagesSequence.append(frame)
cv2.imshow('Output',ImagesSequence[i].astype(np.uint8))
i=i+1
if cv2.waitKey(1) & 0xFF == ord('q'):
break
return ImagesSequence
test(0)
from cv2 import *
import numpy as np
ImagesSequence=[]
i=0
cap = cv2.VideoCapture(0)
while True:
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('frame', frame)
ImagesSequence.append(cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY))
cv2.imshow('output', ImagesSequence[i].astype(np.uint8))
i=i+1
if cv2.waitKey(60) == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()