В сценарии matlab я использую символ escape оболочки «!». для запуска других скриптов python, таких как внешние команды. Все работало без каких-либо проблем, за исключением того, что добавление части кода относительно модуля Wand (мне нужно, чтобы преобразовать images.pdf в images.png и поля урожая). Это невероятно, он не работает с Matlab, но работает очень хорошо, если его запускают из оболочки!Модуль Wand Python, похоже, не работает при вызове в скрипте python с помощью команды для операционной системы в matlab
От переводчика Python, это работает отлично:
:~ $ python
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from wand.image import Image as wandImage
>>> with wandImage(filename = '/Users/toto/test.pdf') as img:
... img.save(filename = '/Users/toto/test.png')
...
>>>
Из сценария, он работает отлично:
-The скрипт test.py:
$ pwd; ls -l test.py
/Users/toto
-rwxrwxrwx 1 toto staff 326 22 sep 10:23 test.py
$
$ more test.py
#! /usr/bin/python
# -*- coding: utf-8 -*- # Character encoding, recommended
## -*- coding: iso-8859-1 -*- # Character encoding, old (Latin-1)
from wand.image import Image as wandImage
with wandImage(filename = '/Users/toto/test.pdf') as img:
img.save(filename = '/Users/toto/test.png')
-Контейнер в оболочке:
$ /Users/toto/test.py
$
С Matlab, не работает:
>> ! /Users/toto/test.py
Traceback (most recent call last):
File "/Users/toto/test.py", line 9, in <module>
img.save(filename = '/Users/toto/test.png')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/wand/image.py", line 2719, in save
self.raise_exception()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/wand/resource.py", line 222, in raise_exception
raise e
wand.exceptions.WandError: wand contains no images `MagickWand-1' @ error/magick-image.c/MagickWriteImage/13115
>>
Arghhh Я чувствую, как лев в клетке. Наверное, я что-то забыл, но не нашел! Любая помощь/предложение будут очень благодарны !!!
Edit 1:
Похоже, что проблема возникает из функции "преобразовать" в ImageMagick.
-В оболочку, отлично работает:
$ /usr/local/bin/convert /Users/toto/test.pdf -crop 510x613+42+64 /Users/toto/test-crop.png
$
-В Matlab, не работает:
>>! /usr/local/bin/convert /Users/toto/test.pdf -crop 510x613+42+64 /Users/toto/test-crop.png
convert: no images defined `/Users/toto/test-crop.png' @ error/convert.c/ConvertImageCommand/3230.
>>
:-(