Удаление выделенных областей при преобразовании pdf в изображение?

Я пытаюсь преобразовать pdf-файлы в png, что обычно отлично работает, но иногда я получаю этот результат.

Есть две части, которые «выделены», и я не уверен, почему, поскольку ImageMagick не всегда делает это.

Вот код, с которым я работаю:

with Image(filename=pdf, resolution=200) as src:
     src.background_color = Color('white')
     src.alpha_channel = 'remove'
     images = src.sequence
     Image(images[1]).save(filename='test.png')

Я подумал, что может быть проблема с прозрачностью, поэтому первые две строки связаны с этим вопрос.

Как я могу заставить это изображение просто отображаться нормально, как это изображение, которое выглядит правильно? Спасибо!


person byteme    schedule 23.05.2018    source источник


Ответы (1)


Проблема в том, что ваш ввод имеет альфа-канал. Таким образом, простое удаление альфа-канала или выравнивание его на белом оставляет эту область серой, поскольку она находится на основном изображении.

Лучший способ исправить это — использовать функцию ImageMagick -lat.

См. http://www.imagemagick.org/script/command-line-options.php#lat

Поскольку у меня нет вашего оригинала, я могу обработать только полученный файл PNG, который показывает это поведение.

Ввод с прозрачностью

введите здесь описание изображения

Обработка

convert input.png -background white -flatten -negate -lat 25x25+10% -negate result.png

введите здесь описание изображения

person fmw42    schedule 23.05.2018
comment
Только что проверил, работает в командной строке, спасибо! Однако, поскольку я работаю с большим количеством изображений (в степени десятков тысяч), есть ли эквивалент функции -lat в коде Python? - person byteme; 23.05.2018
comment
Я не вижу этого в Python Wand. А вот threshold_local в Skimage выглядит похоже, правда я не пробовал. См. scikit-image.org/docs/dev /апи/. В OpenCV также есть адаптивное пороговое значение по адресу docs.opencv.org/3.4. 0/d7/d4d/tutorial_py_thresholding.html, хотя опять же я этого не пробовал. - person fmw42; 23.05.2018