python 解决手机拍的书籍图片发灰的问题

老师给发的作业经常是手机拍的,而不是扫描,背景发灰,如果二次打印就没有看了,象这样:

如果使用photoshop 处理,有些地方还是扣不干净,不如python 做的好,处理后如下:

具体的代码如下:

from PIL import Image
import numpy as np
import osfrom PIL import Image, ImageOpsdef process_image(input_path, output_path, threshold=110):# 打开图片并转换为灰度图像img = Image.open(input_path).convert('L')# 使用阈值分割,将灰色部分转为白色img = img.point(lambda x: 255 if x > threshold else x)# 获取原始文件名和扩展名base_name, ext = os.path.splitext(os.path.basename(input_path))# 构造新的文件名new_file_name = f"{base_name}-1{ext}"# 保存处理后的图片img.save(os.path.join(output_path, new_file_name))def process_image_array(input_paths, output_path):# 创建输出文件夹(如果不存在)os.makedirs(output_path, exist_ok=True)# 处理每张图片for input_path in input_paths:process_image(input_path, output_path)if __name__ == "__main__":input_path = "D:\\python_code\\temp\\2.jpg"  # 替换为你的输入图片路径output_path = "D:\\python_code\\temp\\2-1.jpg"  # 替换为你的输出图片路径input_paths = ["D:\\python_code\\temp\\1.jpg", "D:\\python_code\\temp\\2.jpg","D:\\python_code\\temp\\3.jpg","D:\\python_code\\temp\\4.jpg",]  # 替换为你的输入图片路径数组output_path = "D:\\python_code\\temp"  # 替换为你的输出文件夹路径process_image_array(input_paths, output_path)#process_image(input_path, output_path)

如果发现识别有问题,可以更改阈值,试试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/296543.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 设备背景图片 宽高总是不能平铺

宽高总是宽大了 高就挤出去了;高设置了 宽度就变小了;疯掉的节奏。。。。。。 .center-bottom{background: url(/img/newpic/leftbg.png);background-repeat: no-repeat;width: 98%;height: 60%;background-position: center center;background-size: 1…

关于网络犯罪份子租用WikiLoader通过银行木马攻击意大利组织的动态情报

一、基本内容 近期Proofpoint研究人员发现了一种新的恶意软件,被称为WikiLoader。这个恶意软件在2022年12月首次被发现,并且由攻击者组织TA544传播,他们通常使用Ursnif恶意软件来攻击意大利组织。Proofpoint观察到了多个与此相关的活动&…

设计模式(4)--类行为(3)--解释器

1. 意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语 言中的句子。 2. 四种角色 抽象表达式(AbstractExpression)、终结表达式(TerminalExpression)、非终结表达式(NonterminalExpression)、上下文…

LTE之帧结构

一、基本时间单位 在LTE里,时间的基本单位都是采样周期Ts,值固定等于: Ts 1 / (15000 * 2048) 32.55ns 其中,15000表示子载波的间隔是15kHz,2048表示采样点个数。除了15kHz的子载波间隔之外,3GPP还定义…

【高数定积分求解旋转体体积】 —— (上)高等数学|定积分|柱壳法|学习技巧

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 Shell method Setting up the Integral 例题 Example 1: Example 2: Example 3: Computing…

安工程校园导游系统课程设计报告

第一章 概述 1.1 问题描述 根据题目内容,需要用无向网表示所在学校的景点平面图,即校内每个景点 为无向网中的各个结点,景点的编号、名称、简介等信息存储在结点中,图中的 边表示景点间的道路,存放景点之间的路径长度等信息。需要回答有关景点介绍、 游览路径等问题。具…

【LearnOpenGL基础入门——5】着色器

目录 一.简介 二.GLSL 三.数据类型 四.输入与输出 五.Uniform 六.更多属性 一.简介 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立…

深度学习 | 基础卷积神经网络

卷积神经网络是人脸识别、自动驾驶汽车等大多数计算机视觉应用的支柱。可以认为是一种特殊的神经网络架构,其中基本的矩阵乘法运算被卷积运算取代,专门处理具有网格状拓扑结构的数据。 1、全连接层的问题 1.1、全连接层的问题 “全连接层”的特点是每个…

关于巴西网络犯罪分子使用LOLBaS和CMD脚本窃取银行账户的动态情报

一、基本内容 最近,一名未知身份的网络犯罪威胁行为者以使用西班牙语和葡萄牙语的用户为目标,破坏墨西哥、秘鲁和葡萄牙等地的网上银行账户。该攻击链主要利用社会工程学技术,利用葡萄牙和西班牙用户的电子邮件,发送带有欺骗性的…

idea structure视图介绍

作用 idea的Structure视图可以辅助查看代码结构 如何呼出Structure视图? Alt 7 Ctrl F12 侧边栏点Structure 我的常用配置 1、选Show Toolbar,便于使用功能按钮 2、使用Float视图,悬浮于窗口表面,可以使用 ShiftEsc来退出…

若依vue如何展示一个HTML页面(或者展示Markdown文档)

一. 前言 ⚠ 本文是展示Markdown的方法,不能直接前端编辑Markdown文档. 二. 准备部分 用Typora编辑器打开需要导出html页面,我这里使用Typora来导出 1. 先将md文件导出成html 2. 将导出好的文件放在若依vue的pubilc下(文件可以是中文) 三. 代码部分 1.使用v-html来展示HT…

ApsaraMQ Serverless 演进之路,助力企业降本

作者:家泽 ApsaraMQ 与时俱进,砥砺前行 阿里云消息队列从诞生开始,至今已有十余年。今年,阿里云消息产品全面品牌升级为 ApsaraMQ,与时俱进,砥砺前行。 2012 年,RocketMQ 诞生于集团内部&…