Почему использование cv2.imread для чтения изображения, созданного Wand, из файла PDF возвращает все 255 для всех RGB? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь определить сгустки текста в файле PDF.Например, в академической статье есть разные разделы, и я хочу обозначить заголовок как раздел, авторов и адреса как раздел, а реферат - как раздел.

Я думаю, что одним из решений является использование cv2.Сначала я преобразовываю pdf в изображение, используя Wand, используя следующие коды:

from wand.color import Color
from wand.image import Image as Img
with Img(filename='./files/paper.pdf', resolution=300) as img:
    img.background_color = Color("white")
    img.alpha_channel = 'remove'
    img.save(filename='test_file.jpg')

Однако, когда я пытаюсь открыть файл jpg в cv2 с помощью:

image = cv2.imread('test_file.jpg')

print image

, распечатка показываетчто все значения в этом изображении равны 255 для всех пикселей.

array([[[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       ...,

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]]], dtype=uint8)

А потом, когда я захочу использовать cv2.dnn.blobFromImage (), оно просто не получится правильно.

Что происходит?Было ли это потому, что PDF не был правильно преобразован в изображение?Но я попробовал

from PIL import Image
text = pytesseract.image_to_string(Image.open('test_file.jpg'))

, он вернул мне весь текст ...

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Изображения палочек не являются массивными массивами и поэтому не могут быть просто открыты в cv2.В Wand 5.3 будет возможность импортировать и экспортировать изображения Wand в массивы и из них.

В Wand 5.2 вы можете использовать import_pixels для преобразования пустого массива в изображение Wand.В Wand 5.2 вы можете экспортировать изображение Wand в массив numpy, который вы сможете использовать в cv2.Матрица

import numpy as np
from wand.image import Image

with Image(filename='rose.png') as img: 
    matrix = np.array(img)

будет массивом, который вы затем сможете использовать в OpenCV

0 голосов
/ 04 апреля 2019

Посмотреть все точки?Печать изображения просто показывает несколько пикселей изображения.Предполагая, что у вас есть текстовый документ в формате PDF с белым фоном, можно с уверенностью предположить, что все краевые пиксели являются белыми.Печать, как правило, покажет вам углы изображения.

Чтобы показать изображение, используйте

image = cv2.imread('test_file.jpg')
cv2.imshow('Image', image)
cv2.waitKey(0)

. Это отобразит изображение в окне и будет ждать, пока вы нажмете клавишу, прежде чем исчезнуть.

...