Files
zjsh_yolov11/muban/caijian.py
琉璃月光 67883f1a50 最新推送
2026-03-10 14:14:14 +08:00

70 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import cv2
# =========================================================
# 配置
# =========================================================
SRC_DIR = "muban_image" # 原始模板目录
DST_DIR = "muban_image2" # 裁剪后保存目录
# 三个 ROIx, y, w, h
ROI_1 = (782, 614, 164, 128)
ROI_2 = (837, 791, 100, 99)
ROI_3 = (873, 736, 141, 110)
# =========================================================
# 裁剪函数
# =========================================================
def crop_and_save(img_path, save_dir):
img = cv2.imread(img_path)
if img is None:
print(f"[WARN] 读取失败: {img_path}")
return
h_img, w_img = img.shape[:2]
base = os.path.splitext(os.path.basename(img_path))[0]
roi_list = [ROI_1, ROI_2, ROI_3]
for idx, roi in enumerate(roi_list, start=1):
x, y, w, h = roi
# 边界保护
x1 = max(0, x)
y1 = max(0, y)
x2 = min(w_img, x + w)
y2 = min(h_img, y + h)
if x2 <= x1 or y2 <= y1:
print(f"[WARN] ROI_{idx} 超出图像范围: {img_path}")
continue
roi_img = img[y1:y2, x1:x2]
save_name = f"{base}_roi{idx}.png"
save_path = os.path.join(save_dir, save_name)
cv2.imwrite(save_path, roi_img)
print(f"[OK] 保存: {save_path}")
# =========================================================
# main
# =========================================================
if __name__ == "__main__":
if not os.path.isdir(SRC_DIR):
raise RuntimeError(f"源目录不存在: {SRC_DIR}")
os.makedirs(DST_DIR, exist_ok=True)
for fname in os.listdir(SRC_DIR):
if not fname.lower().endswith((".png", ".jpg", ".jpeg", ".bmp")):
continue
img_path = os.path.join(SRC_DIR, fname)
crop_and_save(img_path, DST_DIR)
print("\n[INFO] 所有图片裁剪完成")