1 回答

TA貢獻1871條經驗 獲得超8個贊
在函數frame_to_base64(frames)中,frames已經是單個圖像,因為VideoCapture.read返回單個圖像。它也是一個 opencv 圖像(numpy 數組),它不是你可以使用“with”的東西。
def frame_to_base64(frame):
return base64.b64encode(frame)
如果你想讀取視頻的所有幀,你應該這樣做:
import cv2
import base64
def footage_to_frame(video):
vidcap = cv2.VideoCapture(video)
frames = []
# read until no more frames exist in the video
while True:
success, frame = vidcap.read()
if (success):
frames.append(frame)
else:
# unable to read a frame
break
return frames
def frames_to_base64(frames):
frames_b64 = []
# iterate frames and convert each of them to base64
for frame in frames:
frames_b64.append(base64.b64encode(frame))
return frames_b64
盡管根據視頻長度,您可能會遇到內存問題。
添加回答
舉報