0
我想從視頻中讀取幀,但在提取幀後視頻無用。所以我決定使用TempFile模塊。但是我使用cv2.VideoCapture(NamedTempFile.name)
得到的幀始終是黑色的。我想知道這是否是正確的做法。如果沒有,有沒有更好的辦法? 我在下面附上了我的代碼的視頻捕獲部分。
另外我懷疑get_temp_video函數可能是錯誤的。如何使用OpenCV從python中的NamedTempFile中讀取視頻
def get_temp_video(url, temp_file):
r = requests.get(url, stream=True)
for chunk in r.iter_content(chunk_size=1024):
if chunk:
temp_file.write(chunk)
return temp_file
def get_frame(video_url):
named_temp_file = NamedTemporaryFile()
named_temp_file = get_temp_video(video_url, named_temp_file)
named_temp_file.seek(0)
video = cv2.VideoCapture(named_temp_file.name)
while video.isOpened():
ret, frame = video.read()
if ret:
temp_file = TemporaryFile()
np.save(temp_file, frame)
temp_file.seek(0)
upload_to_some_where(temp_file.read())
temp_file.close()
else:
break
video.release()
named_temp_file.close()
感謝您的回答。我發現錯誤在哪裏。就像你的回答,upload_to_some_where函數中的某些邏輯是錯誤的, –