2014-01-06 3 views
1

Я пробовал искать его, и похоже, что у кого-то еще такая ошибка.imread() перестала работать на Octave

Я использую Octave 3.6.1 на Ubuntu 12.04. Я использую imread() несильно читать изображения в течение достаточно долгого времени, но только вчера он начал бросать эту ошибку:

octave:5> I = imread('example.jpg'); 
error: imread: invalid image file: Magick++ exception: Magick: Unable to open file (tures/example.jpg) reported by coders/jpeg.c:955 (ReadJPEGImage) 
error: called from: 
error: /usr/share/octave/3.6.1/m/image/imread.m at line 74, column 7 

Если я пытаюсь читать PNG, я получаю подобную ошибку:

octave:5> I = imread('example.png'); 
error: imread: invalid image file: Magick++ exception: Magick: Unable to open file (tures/example.png) reported by coders/png.c:2790 (ReadPNGImage) 
error: called from: 
error: /usr/share/octave/3.6.1/m/image/imread.m at line 74, column 7 

Кто-нибудь знает, что происходит? Как это исправить?

Большое спасибо!

+0

Вы пытались переустановить либо пакет обработки изображений, который используете, либо октаву? Появилась ли эта ошибка после того, как вы что-то установили? – Dan

+1

Я попытался переустановить все, и проблема не устранена. Я считаю, что это, вероятно, началось после одного из ежедневных обновлений Ubuntu ... – flaviomax

+0

И example.jpg и т. Д. Определенно в правой папке? Каков путь вашего сценария и путь к изображению? – Dan

ответ

1

Octave использует GraphicsMagick (или ImageMagick) для обработки чтения и записи изображений. GraphicsMagick не обрабатывает непосредственно чтение и запись изображений, это оболочка для многих библиотек формата под одним API.

Когда вы создаете GraphicsMagick, он проверяет вашу систему на наличие доступных библиотек и отключает/активирует форматы, поскольку это подарки. Вы, вероятно, сами создали GraphicsMagick без библиотек разработки libpng и libjpeg. В Ubuntu я считаю, что они находятся в пакетах libpng12-dev и libjpeg8-dev. Либо используйте библиотеки GraphicsMagick, которые поставляются вместе с вашей системой, либо вам нужно их самостоятельно создать, см. Инструкции в Octave wiki.

Чтобы убедиться, что это действительно ваша проблема, запустите gm -version и проверьте, активированы ли эти форматы. Например, выход в моей системе показывает:

Feature Support: 
    Thread Safe    yes 
    Large Files (> 32 bit) yes 
    Large Memory (> 32 bit) no 
    BZIP      yes 
    DPS      no 
    FlashPix     no 
    FreeType     yes 
    Ghostscript (Library) no 
    JBIG      yes 
    JPEG-2000    yes 
    JPEG      yes 
    Little CMS    yes 
    Loadable Modules   no 
    OpenMP     yes (201107) 
    PNG      yes 
    TIFF      yes 
    TRIO      no 
    UMEM      no 
    WMF      yes 
    X11      yes 
    XML      yes 
    ZLIB      yes 
+1

Когда я запускаю 'gm -version', кажется, что нет ничего плохого; оба формата png и jpeg отмечены как поддерживаемые. Я попытался переустановить Octave, GraphicsMagick, создав его самостоятельно, как это делает wiki, и проблема не устранена. – flaviomax

+0

@ user3166406 дважды проверьте, что в вашей системе не более одного GraphicsMagick. Или у вас есть более одной версии Octave, и вы все еще используете предыдущую сборку Octave (связанную с «плохой» GraphicsMagick). – carandraug

1

У меня была такая же проблема с 3.6.4 на Windows 8.1, простой обходной путь для меня это:

IMAGE_PATH = ('C:\Users\...'); 

, где хранится образ

Image = file_in_path(IMAGE_PATH, 'image.jpg'); 

Конечно, было бы лучше исправить действительную функцию, но на данный момент это достаточно хорошо.

Надеюсь, это поможет.

Смежные вопросы