2014-09-08 2 views
0

Я создаю GUI, содержащий изображение, используя следующий код:Matlab графический интерфейс изображение неправильно синий

try 
    Imagenamehere = imread('Imagenamehere.jpg'); 
    axes(handles.Logo) 
    image(Imagenamehere) 
    set(gca,'xtick',[],'ytick',[]) 
catch 
    msgbox('Please download all contents from the zipped file into working directory.') 
end 

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

Кто-нибудь знает, что может быть причиной этого?

ответ

2

Проверьте размер, тип (возможно, uint8) и область действия вашего изображения. Похоже, что по какой-то причине ваши изображения отображаются с colormap как jet (по умолчанию), и, возможно, также, что ваш диапазон не соответствует ожидаемому MATLAB (например, от 0 до 1 не от 0 до 255), в результате чего все ваши значения относительно низки (синий на струйной карте).

«черно-белый» - это всего лишь один способ интерпретации файла изображения, который содержит только два цвета. MATLAB делает несколько предположений, когда вы передаете данные в функцию отображения, например image. Если вы не укажете диапазон данных цветовой карты и изображения, это приведет к предположению, основанному на таких вещах, как тип данных.

Одна из возможностей заключается в том, что ваш файл логотипа является проиндексированным изображением. В этих случаях вам необходимо:

[Imagenamehere map] = imread('Imagenamehere.jpg'); 
colormap(map); 
+0

Спасибо, я думаю, это было проиндексированное изображение, потому что я использовал предложенный вами код, и логотип теперь выглядит так, как ожидалось! – djj19

+0

Я только что понял, что это создало новую проблему! Остальные мои фигуры, которые были ранее окрашены, теперь черно-белые? – djj19

+0

тип - uint8. получив 500x542 для размера cdata и 16x3 для размера colourmap. – djj19

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