Files
aiData/Util/DevTools/crop_test.py
HuangHai b66f683dfb 'commit'
2026-01-12 07:49:18 +08:00

74 lines
2.4 KiB
Python
Raw 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.

# -*- coding: utf-8 -*-
"""
基于行扫描和统计特征的卡片截取工具
"""
import sys
import os
# 添加项目根目录到系统路径
project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(project_root)
from Util import Kit
def clean_directory(dir_path):
"""
清理现场:删除目录下除纯数字.jpg以外的所有文件
"""
print(f"Cleaning directory: {dir_path}")
if not os.path.exists(dir_path):
return
for filename in os.listdir(dir_path):
path = os.path.join(dir_path, filename)
if not os.path.isfile(path):
continue
name, ext = os.path.splitext(filename)
# 保留条件:后缀是 .jpg 且文件名是纯数字
# [修改] 同时保留 _flag.jpg, _vl.jpg 供查看
# [修改] 保留 .json 文件
if ext.lower() == ".json":
continue
if ext.lower() == ".jpg" and (name.isdigit() or name.endswith("_flag") or name.endswith("_vl")):
continue
# 清理旧的 _for_vl.jpg
if name.endswith("_for_vl"):
pass # Let it fall through to delete
else:
# 其他非生成的文件,可能需要保留吗?
# 这里的逻辑是清理 output 目录,假设该目录下只有生成的图片
# 如果是原始图片(比如 1.jpg不能删
pass
# 原始图片保护 (文件名比较短,通常是 1.jpg, 2.jpg 等)
if len(name) <= 2 and name.isdigit():
continue
try:
os.remove(path)
print(f" Deleted: {filename}")
except Exception as e:
print(f" Error deleting {filename}: {e}")
def crop_cards(img_path):
Kit.crop_cards_from_image(img_path)
if __name__ == "__main__":
test_files = [
r"d:\dsWork\dsProject\dsCrawler\Tools\Images\1.jpg",
r"d:\dsWork\dsProject\dsCrawler\Tools\Images\2.jpg",
r"d:\dsWork\dsProject\dsCrawler\Tools\Images\3.jpg",
r"d:\dsWork\dsProject\dsCrawler\Tools\Images\4.jpg"
]
# 在测试前清理现场
if test_files:
# 假设所有图片都在同一个文件夹
target_dir = os.path.dirname(test_files[0])
clean_directory(target_dir)
for f in test_files:
crop_cards(f)