我遇到一个问题,即使用 MoviePy 创建的处理视频的长度比基于 Mediapipe 的视频处理脚本生成的相应 CSV 文件短。具体来说,视频有时会长达 30 秒,而 CSV 文件记录的事件长达 45 秒。 CSV 文件正确记录了时间戳和状态,我已经验证了这一点。此外,CSV 文件末尾的摘要行未按预期显示。
这是我的代码的相关部分:
import csv
from tkinter import messagebox
from moviepy.editor import ImageSequenceClip
# ... [rest of the code]
def process_video(self, camera, perclos_thresh, roll_thresh, pitch_thresh, yaw_thresh,
ear_time_thresh, mar_time_thresh, gaze_time_thresh, pose_time_thresh,
csv_filename, video_filename):
# ... [processing code]
frames_to_video = [] # List to store frames for the video
# Initializing CSV
with open(csv_filename, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Timestamp', 'Cansado', 'Dormindo', 'Olhando Fora', 'Distraído', 'Bocejando'])
# ... [rest of the processing loop]
# Finalizing CSV
with open(csv_filename, mode='a', newline='') as file_append:
writer_append = csv.writer(file_append)
# Calculate final durations for active states
# ... [write summary lines]
# Create the video from the list of frames using moviepy
try:
video_clip = ImageSequenceClip(frames_to_video, fps=real_fps)
video_clip.write_videofile(video_filename, codec='libx264')
except Exception as e:
messagebox.showerror("Erro ao salvar o vídeo", f"Ocorreu um erro ao salvar o vídeo: {e}")
if __name__ == "__main__":
app = VideoProcessingApp()
app.mainloop()
问题:
视频持续时间有时比 CSV 文件持续时间短。 最终摘要行不会出现在 CSV 文件中。 我尝试过的:
我已确保 CSV 文件正确记录时间戳和状态。
问题:任何人都可以帮助确定为什么视频持续时间可能比 CSV 文件短以及为什么 CSV 文件中缺少摘要行吗?帧的收集和保存方式或 CSV 文件的最终确定方式是否存在潜在问题?
您可以添加打印语句来检查向
frames_to_video
添加了多少帧,并确保该数字与 CSV 文件中的时间戳匹配。它还有助于打印收集最后一帧的时间,并将其与 CSV 中的时间戳进行比较,看看它们是否对齐。此外,在将摘要行写入 CSV 文件的代码部分中包含打印语句或错误处理。这将有助于确认该部分是否按预期运行。