Редактировать: я внес изменение в код после комментария @Dan Mašek
Этого можно достичь (загрузить PDF встроенные изображения в OpenCV
без записи промежуточных объектов на диске), используя PyMuPDF
и Numpy
.
В этом примере я использую этот файл PDF .
import fitz
import cv2
import numpy as np
def pix2np(pix):
im = np.frombuffer(pix.samples, dtype=np.uint8).reshape(pix.h, pix.w, pix.n)
im = np.ascontiguousarray(im[..., [2, 1, 0]]) # rgb to bgr
return im
doc = fitz.open('NGM_2018_Media_Kit.pdf')
# entire page
# pix = doc.getPagePixmap(0, alpha=False)
# first page , 5th image, xref element
pix = fitz.Pixmap(doc, doc.getPageImageList(0)[4][0])
im = pix2np(pix)
cv2.putText(im, 'Azul fellawen', (100, 100),
cv2.FONT_HERSHEY_SIMPLEX, 1.,
(18, 156, 243), 2, cv2.LINE_AA)
cv2.imwrite('sample_0.png', im)