2012-07-01 2 views
2

У меня есть изображение, сохраненное другим кодом. Изображение является обычным JPG-файлом. Я сохранил его с imsave.python mahotas.imread читает изображение 2d как 3d

теперь, когда я читаю его в другом коде, это, кажется, 3d: S

изображение here.

и простой код, чтобы прочитать это:

import mahotas 

img = mahotas.imread('d:/normal.jpg') 
print img.shape, img.dtype 
+1

К 3d, вы имеете в виду x * y * 3? В этом случае он считывается как цветное изображение, и вам просто нужно преобразовать его в оттенки серого. – Junuxx

+0

Фактически x * y * 3 ... – Kiarash

ответ

2

Попробуйте чтение JPG в оттенках серого, как это:

mahotas.imread('d:/normal.jpg', as_grey = True) 
+0

спасибо. это работает. но могу ли я как-то сохранить его в качестве серой шкалы? – Kiarash

+0

@ Kiarash: Я не думаю, что есть такая штука, как JPG с оттенками серого. Если вы хотите кодировать изображение как оттенки серого, выберите другой формат изображения, такой как GIF, PNG, TIF. – Junuxx

+0

спасибо. Я решил! – Kiarash

2

(Автор mahotas здесь).

Предположение Junuxx правильно:

mahotas.imread('file.jpg', as_grey=True) 

Это читает файл RGB и преобразует его в оттенки серого с помощью средневзвешенных компонентов (они не в равной степени взвешенным, но использовать типовые коэффициенты, которые пытаются быть более восприимчивым).

В качестве альтернативы (который я предпочел) является:

im = mahotas.imread('file.jpg') 
im = im[:,:,0] 

Я полагаю, что все каналы имеют то же значение, и использовать только первый.