











昨天孩子找我打印卷子,是别的同学拍的,直接打印 黑呼呼的。
ps调整,要点好几次,1张 2张还行,那也麻烦啊。
找了一个全能扫描王,新用户可以用图片去底的功能。
但是以后要钱了,就麻烦了。我就用这一个功能。
用ai写了一个代码,因为的第5版,所以是clear5,前4版效果都不好,打包用的pyinstaller
我打包是win64版本,因为我自己是win11 64位。
将clear5.exe 和 照片放在一个目录,双击clear5.exe 会自动扫描当前目录图片,生成图片放在ok目录
下载地址:https://gitee.com/pengchenggang/python-clear-paper/releases/tag/v1.0.1-clear5
程序大于100M,所以切割成了两个文件下载,一个opencv库就100M了
import cv2
import numpy as np
import os
import glob
print("=========================================")
print(" 试卷白底高清化工具 - 批量版 (离线) ")
print("=========================================")
# 1. 自动在当前目录下创建名为 'ok' 的输出目录
output_dir = 'ok'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
print(f"📁 已自动创建输出文件夹: {output_dir}")
# 2. 定义要扫描的文件类型
# image_extensions = ['*.jpg', '*.jpeg', '*.png', '*.JPG', '*.JPEG', '*.PNG']
found_files = []
# 2. 定义要扫描的文件类型(只需要写小写即可,后面会用 set 去重)
image_extensions = ['*.jpg', '*.jpeg', '*.png']
found_files_raw = []
# 3. 仅获取当前目录下的文件(不递归子目录)
for ext in image_extensions:
found_files_raw.extend(glob.glob(ext))
# 【核心修复】使用 set() 去除由于大小写不区分导致的重复路径,再转回列表
found_files = list(set(found_files_raw))
if not found_files:
print("\n❌ 错误:当前文件夹下没有找到任何 jpg 或 png 图片!")
print("💡 使用方法:请把要处理的图片和本程序放在【同一个文件夹】里。")
input("\n按回车键退出程序...")
exit()
print(f"\n🚀 共发现 {len(found_files)} 张图片,开始批量处理...\n")
# 4. 循环处理每一张图片
success_count = 0
for file_path in found_files:
# 获取纯文件名(例如 '01.jpg')
base_name = os.path.basename(file_path)
# 构造输出路径(例如 'ok/ok-01.jpg')
# 保持原扩展名不变,方便查看
output_path = os.path.join(output_dir, f"ok-{base_name}")
print(f"⏳ 正在处理: {base_name} ...", end="", flush=True)
# 读取图片(灰度模式)
img = cv2.imread(file_path, cv2.IMREAD_GRAYSCALE)
if img is None:
print(" ❌ 读取失败,跳过。")
continue
# --- 核心图像算法(保持你优秀的去背透参数不变) ---
bg = cv2.medianBlur(img, 31)
img_float = img.astype(float)
bg_float = bg.astype(float) + 1.0
normalized = (img_float / bg_float * 255.0).clip(0, 255).astype(np.uint8)
lut = np.arange(256, dtype=np.uint8)
for i in range(256):
if i > 225:
lut[i] = 255
elif i < 100:
lut[i] = int(pow(i / 100.0, 1.5) * 50)
else:
lut[i] = int(50 + (i - 100) * (255 - 50) / (225 - 100))
result = cv2.LUT(normalized, lut)
gaussian = cv2.GaussianBlur(result, (0, 0), 2)
sharpened = cv2.addWeighted(result, 1.5, gaussian, -0.5, 0)
# --- 保存输出到 ok 目录下 ---
cv2.imwrite(output_path, sharpened)
print(" ✅ 完成!")
success_count += 1
print("\n=========================================")
print(f"🎉 批量任务结束!成功处理 {success_count}/{len(found_files)} 张图片。")
print(f"📂 所有导出的高清图片已存放在当前目录的 【{output_dir}】 文件夹中。")
print("=========================================")
input("\n按回车键退出...")
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。