【问题标题】:Unable to resize image using cv2 after converting pdf to images using pdf2image package使用 pdf2image 包将 pdf 转换为图像后无法使用 cv2 调整图像大小
【发布时间】:2021-05-20 00:19:57
【问题描述】:

使用 pdf2image 包将 pdf 转换为图像后,无法使用 cv2 调整图像大小。

代码是

import os
import cv2
from pdf2image import convert_from_path
pdf_files = [filename for filename in os.listdir(
    os.getcwd()) if filename.endswith('.pdf')]
for pdf_file in pdf_files:
    images = convert_from_path(pdf_file, 400)
    for i, image in enumerate(images):
        fname = pdf_file+'_image'+str(i)+'.jpg'
        fname = cv2.resize(fname, (3400, 4400))
        image.save(fname, "JPEG")

错误是

fname = cv2.resize(fname, (3400, 4400))
TypeError: Expected Ptr<cv::UMat> for argument 'src'

【问题讨论】:

    标签: python-3.x opencv computer-vision cv2 opencv-python


    【解决方案1】:

    您正在尝试在这行代码中调整文件名的大小:

    fname = cv2.resize(fname, (3400, 4400))
    

    将上面的行替换为:

    image = cv2.resize(image, (3400, 4400))
    

    要保存图像,命令将是cv2.imwrite(fname, image)

    您还需要将图像转换为数组。为此,您必须import numpy。完整代码如下:

    import os
    import cv2
    import numpy as np 
    from pdf2image import convert_from_path
    pdf_files = [filename for filename in os.listdir(
        os.getcwd()) if filename.endswith('.pdf')]
    for pdf_file in pdf_files:
        images = convert_from_path(pdf_file, 400)
        for i, image in enumerate(images):
            fname = pdf_file+'_image'+str(i)+'.jpg'
            image = np.array(image)
            image = cv2.resize(image, (3400, 4400))
            cv2.imwrite(fname, image)
    

    【讨论】:

    • 我已经更新了我的答案。这对你有用吗?
    • 它有效,但 pdf 中的黄色在转换后的图像中是蓝色的。有什么错误吗?
    • cv2.imwrite(fname, cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) 应该修复它。您可以找到更多详细信息here
    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 2021-01-14
    • 2016-08-05
    • 2018-02-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2014-09-21
    相关资源
    最近更新 更多