超分辨率重建数据集制作:高分辨率图像采集(从pdf中获取图像)

目录

背景

代码

其他


背景

超分辨率重建任务首先需要高清图像。由于需要自己制作超分辨率重建数据集,我从pdf中获取我想要得图像,我根据网上代码进行了改造

可运行代码如下:(注意修改最后两行中的pdf路径和保存结果路径)

代码

#coding=utf-8
import os
import fitz
from os.path import abspath, dirname


# 使用fitz 库直接提取pdf的图像
# 参数:    pdf      源pdf文件完整路径
# 参数:    picPath  提取图像的路径
def muExtractImages(pdf, picPath):
    pdfsplit = os.path.split(pdf)  # 分离出文件名和路径
    pdfname = pdfsplit[-1]  # 获取文件名
    pdfsplit1 = os.path.splitext(pdfname)
    pdfname1 = pdfsplit1[0]  # 获取不带扩展名的文件名

    # print(pdfsplit)
    # print(pdfname)
    # print(pdfname1)
    # 打开pdf,打印PDF的相关信息
    doc = fitz.open(pdf)
    # 图片计数
    imgcount = 0
    lenXREF = doc.xref_length()  # 获取pdf文件对象总数

    # 打印PDF的信息
    print("文件名:{}, 页数: {}, 对象: {}".format(pdf, len(doc), lenXREF - 1))

    # 遍历doc,获取每一页
    for page in doc:
        try:
            imgcount += 1
            tupleImage = page.get_images()
            lstImage = list(tupleImage)
            xref0 = lstImage[0]  # 取第一个元组
            xref1 = list(xref0)  # 元组转化为列表
            xref = xref1[0]  # 最终取得xref  ok
            print("imgID:    %s" % imgcount)
            print("xref:  %s" % xref)
            img = doc.extract_image(xref)  # 获取文件扩展名,图片内容 等信息
            imageFilename = ("%s-%s." % (imgcount, xref) + img["ext"])
            imageFilename = pdfname1 + "_" + imageFilename  # 合成最终 的图像的文件名
            imageFilename = os.path.join(picPath, imageFilename)  # 合成最终图像完整路径名
            print(imageFilename)
            imgout = open(imageFilename, 'wb')  # byte方式新建图片
            imgout.write(img["image"])  # 当前提取的图片写入磁盘
            imgout.close
        except:
            continue


if __name__ == '__main__':
    current_path = abspath(dirname(__file__))  # 获取当前目录
    pdf = r"C:\Users\Administrator\Desktop\test.pdf')  ####待提取的pdf
    muExtractImages(pdf, r"C:\Users\Administrator\Desktop\result")   ###提取出的图片保存路径

其他

可以对主函数进行修改,对多个文件进行提取并保存。

超分辨率重建数据集制作:生成低分辨率数据集:

超分辨率重建数据集制作:生成低分辨率数据集_Alocus的博客-CSDN博客背景超分辨率重建任务需要高清和对应的低质图像。由于需要自己制作超分辨率重建数据集,需要将高分辨率图像按照公认的方式(DIV2k)制作为低分辨率图像,我根据网上代码进行了改造可运行代码如下:代码import osimport argparseimport cv2#parse argsparser = argparse.ArgumentParser(description='Downsize images at 2x using bicubic interpolation')parhttps://blog.csdn.net/Crystal_remember/article/details/122899283

另外我对提取的图片进行了裁剪过滤操作,以适应超分辨率高清图像得要求,具体见我的博客

超分辨率重建数据集制作:裁剪过滤_Alocus的博客-CSDN博客背景由于获取到的高分辨率图像尺寸不一,不符合公认的要求,因此我对图像进行了裁剪过滤,代码如下代码#coding=utf-8from PIL import Imageimport randomimport osdirs = r'C:\Users\Administrator\Desktop\敦煌超分\数据集'result_dir = r'C:\Users\Administrator\Desktop\敦煌超分\数据集2'name= []num = 1list = os.listdirhttps://blog.csdn.net/Crystal_remember/article/details/122900146

我进一步增添了一些功能,将pdf和图像进行互相转换,解决有时pdf无法提取图片的问题,如下。

超分辨率重建数据集制作:高分辨率图像采集(将pdf转换为图像)_Alocus的博客-CSDN博客背景之前有用到从pdf中提取图片,但是有的时候提取会失败,提取出长条状的残次图像,提取不完整。因此我找了网上的代码,将pdf转换为图片。该代码来自https://github.com/jtyoui/Jtyoui/tree/master/jtyoui#coding=utf-8import osimport fitzfrom os.path import abspath, dirname# 使用fitz 库直接提取pdf的图像# 参数: pdf 源pdf文件完整路径https://blog.csdn.net/Crystal_remember/article/details/123380585

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alocus_

如果我的内容帮助到你,打赏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值