Невозможно изменить размер изображения с помощью cv2 после преобразования pdf в изображения с помощью пакета pdf2image

Невозможно изменить размер изображения с помощью cv2 после преобразования pdf в изображения с помощью пакета pdf2image.

Код

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'

person Nithin Reddy    schedule 17.02.2021    source источник


Ответы (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)
person kindustrii    schedule 17.02.2021
comment
Та же ошибка :(. Я не могу изменить размер - person Nithin Reddy; 17.02.2021
comment
Я обновил свой ответ. Это работает для вас? - person kindustrii; 17.02.2021
comment
Это сработало, но желтый цвет в pdf стал синим в преобразованном изображении. Есть ли ошибка? - person Nithin Reddy; 17.02.2021
comment
cv2.imwrite(fname, cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) должен это исправить. Вы можете найти более подробную информацию здесь - person kindustrii; 17.02.2021
comment
Спасибо чувак!! Это сработало. - person Nithin Reddy; 17.02.2021