Я не нашел хорошей привязки Python для ImageMagick, поэтому, чтобы использовать ImageMagick в программе Python, мне пришлось использовать модуль subprocess
для перенаправления ввода / вывода.
Например, давайте предположим, что нам нужно конвертировать файл PDF в TIF:
path = "/path/to/some.pdf"
cmd = ["convert", "-monochrome", "-compress", "lzw", path, "tif:-"]
fconvert = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = fconvert.communicate()
assert fconvert.returncode == 0, stderr
# now stdout is TIF image. let's load it with OpenCV
filebytes = numpy.asarray(bytearray(stdout), dtype=numpy.uint8)
image = cv2.imdecode(filebytes, cv2.IMREAD_GRAYSCALE)
Здесь я использовал tif:-
, чтобы сообщить утилите командной строки ImageMagick, что я хочу получить изображение TIF в качестве потока stdout. Аналогичным образом вы можете указать ему использовать поток stdin в качестве входных данных, указав -
в качестве имени входного файла.