亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python + OpenCV + Base64:將幀轉換為 Base64 時出現問題

Python + OpenCV + Base64:將幀轉換為 Base64 時出現問題

慕妹3146593 2023-10-18 21:12:38
我正在嘗試將視頻轉換為幀,并將這些幀轉換為 Base64 字符串。我無法這樣做并得到一些例外。下面是我的代碼:import cv2import base64def footage_to_frame(video):    vidcap = cv2.VideoCapture(video)    success, frames = vidcap.read()    if success:        return framesdef frame_to_base64(frames):    with frames as frame:        frame_b64 = base64.b64encode(frame.read())    return frame_b64該方法的函數調用是:frames = converter.footage_to_frame("/Users/myname/Desktop/video.mp4")converter.frame_to_base64(frames)以下是我在控制臺中收到的錯誤:File "/Users/myname/Desktop/Test/src/service/converter.py", line 13, in frame_to_base64    with frames as frame:AttributeError: __enter__
查看完整描述

1 回答

?
ITMISS

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

盡管根據視頻長度,您可能會遇到內存問題。


查看完整回答
反對 回復 2023-10-18
  • 1 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號