ProgressBar#
如何使用 tqdm 生成进度条,参考下面的补丁:https://gitee.com/zhyantao/misc/commit/4305f7a3fe68357d5acb34e5183a437b17dee3ae
diff --git a/scripts/extract_persons.py b/scripts/extract_persons.py
index dd787af2dcb04f332defd52554119248706c004a..adf7d6ff64d37d9b098d217f6d00133b83f2a20f 100644
--- a/scripts/extract_persons.py
+++ b/scripts/extract_persons.py
@@ -2,8 +2,10 @@ import cv2
import numpy as np
import os
import requests
+from tqdm import tqdm
yolo_files_dir = "yolo_files" # YOLO 文件存放目录
+video_dir = f"{yolo_files_dir}/videos" # 视频文件存放目录
def download_file(url, save_path):
@@ -100,9 +102,15 @@ def detect_objects(frame, net, output_layers, classes):
return boxes, confidences, class_ids, indexes
-def extract_persons(
- video_path, output_folder="extracted_persons", frame_interval=300
-):
+def format_progress_bar(progress, bar_length=100):
+ """格式化进度条为 |######## | 94% 的形式"""
+ filled_length = int(round(bar_length * progress))
+ bar = "#" * filled_length + " " * (bar_length - filled_length)
+ percent = round(progress * 100, 2)
+ return f"|{bar}| {percent}%"
+
+
+def extract_persons(video_path, output_folder="extracted_persons", frame_interval=300):
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
@@ -176,6 +184,11 @@ def extract_persons(
frame_count += 1
+ # 使用 tqdm 显示处理进度
+ progress = frame_count / total_frames
+ progress_bar = format_progress_bar(progress)
+ print(f"\r处理进度: {progress_bar}", end="", flush=True)
+
cap.release()
print(f"提取完成!共提取到 {saved_frame_count} 张人像图片。")
@@ -190,7 +203,6 @@ if __name__ == "__main__":
download_yolo_files()
# 将需要检测的视频文件放在 videos 目录下
- video_dir = f"{yolo_files_dir}/videos"
os.makedirs(video_dir, exist_ok=True)
# 枚举 video_dir 下的 mp4 文件