40 lines
1008 B
Python
40 lines
1008 B
Python
import cv2
|
|
import numpy as np
|
|
import glob
|
|
import os
|
|
|
|
# 图片文件夹路径
|
|
img_dir = r"/home/hx/yolo/LK/frames"
|
|
img_files = sorted(glob.glob(os.path.join(img_dir, "*.jpg")))
|
|
|
|
print("找到图片数量:", len(img_files))
|
|
if len(img_files) == 0:
|
|
raise FileNotFoundError("❌ 没有找到图片,请检查路径和后缀!")
|
|
|
|
alpha = 0.01 # 学习率
|
|
mean_bg = None
|
|
|
|
for idx, img_path in enumerate(img_files):
|
|
frame = cv2.imread(img_path)
|
|
if frame is None:
|
|
print(f"⚠️ 跳过无法读取的图片: {img_path}")
|
|
continue
|
|
|
|
frame = frame.astype(np.float32)
|
|
|
|
if mean_bg is None:
|
|
mean_bg = frame.copy()
|
|
else:
|
|
mean_bg = (1 - alpha) * mean_bg + alpha * frame
|
|
|
|
# 每张都打印
|
|
print(f"处理进度: {idx+1}/{len(img_files)}")
|
|
|
|
# 最终背景图
|
|
bg_image = mean_bg.astype(np.uint8)
|
|
|
|
# 保存到 frames 文件夹下
|
|
save_path = os.path.join(img_dir, "background.jpg")
|
|
cv2.imwrite(save_path, bg_image)
|
|
print(f"✅ 背景图已保存: {save_path}")
|