Python 图片处理

Step1

提取PDF中的图片,并另存

Step2

去除灰色纸张背景

python 复制代码
import PyPDF2
from PIL import ImageEnhance,Image,ImageFilter
import cv2
import numpy as np
from skimage.filters import unsharp_mask
from skimage.filters import gaussian
from skimage.restoration import denoise_tv_chambolle

local = './'



pdf_file = open(local+'001.pdf', 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)

num_pages = len(pdf_reader.pages)
print("num : "+str(num_pages))
pic_n=0
# 遍历每一页
for page_num in range(num_pages):
    # 获取当前页对象
    page_obj = pdf_reader.pages[page_num]
    # 获取当前页中的所有对象
    page_objs = page_obj['/Resources']['/XObject'].get_object()
    # 遍历每个对象
    for obj_name in page_objs:
        # 判断对象是否为图片
        if page_objs[obj_name]['/Subtype'] == '/Image':
            # 获取图片对象
            img_obj = page_objs[obj_name]
            # 获取图片数据
            img_data = img_obj.get_data()
            # 将图片数据保存为文件
            with open(local+"/99_tmp.jpg", 'wb') as img_file:
                img_file.write(img_data)
#####################################################################################
            # 图片处理
            image = Image.open(local+"/99_tmp.jpg")
            #饱和度
            enhancer = ImageEnhance.Color(image)
            C_image = enhancer.enhance(0.001)
            C_image.save("./0_tmp.jpg")

            img = cv2.imread('./0_tmp.jpg')
            # 对每个像素进行对比度调整 alpha=对比度  beta=亮度
            img_contrast = cv2.convertScaleAbs(img, alpha=1.4, beta=0)
            
####################################################################################

            pnum=str(page_num).zfill(4)
            pic_str=str(pic_n).zfill(4)
            img_path ="./image_heibai/"+ pic_str + "_" +"page_"+pnum + '.jpg'
            cv2.imwrite(img_path,img_contrast) 
            print("image : "+img_path)
            pic_n=pic_n+1

Step3

去除黑色边框

Step4

去除阴影部分,字清晰

相关推荐
思茂信息几秒前
CST软件BCI仿真模型及仿真案例
开发语言·单片机·嵌入式硬件·算法·emc
xfan_me11 分钟前
维修保养记录精准版 API 对接实战指南
java·大数据·python
海上小飞龙14 分钟前
改一个数,右边全得重算,这题怎么扛住两万次查询
java·c++·python
阿里嘎多学长19 分钟前
2026-09-28 GitHub 热点项目精选
开发语言·程序员·github·代码托管
XiaoMaqqqq37 分钟前
目前知名的IP驱动产业新场景新工具有哪些
网络·python·网络协议·tcp/ip
玩大数据的龙威44 分钟前
农经权二轮延包—固定比例尺不定图幅的公示图批量生成
python·arcgis·二轮延包公示图
程序猿编码1 小时前
C++/CUDA 手写 LLM 推理引擎:拆解 vLLM 核心 PagedAttention 与连续批处理
开发语言·c++·深度学习·神经网络·推理·vllm
hold?fish:palm1 小时前
44 二叉搜索树中第K小的元素
开发语言·c++·算法
凉茶钱1 小时前
【吃透C++】万字解析类和对象
开发语言·c++
白杨尚青2 小时前
C++入门篇(十):string(上)——认识string:构造与三大遍历(一条龙讲透operator[]、迭代器、auto、范围for)
java·开发语言·c++·笔记·stl