【问题标题】:Matlab gui image incorrectly blueMatlab gui图像错误地蓝色
【发布时间】:2014-09-08 21:51:47
【问题描述】:

我正在使用以下代码创建一个包含图像的 GUI:

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

图像显示出来了,但由于某种原因完全是蓝色的,就像通过了蓝色滤镜一样。我认为上传图片并不明智,但它是一个简单的黑白徽标。

有人知道是什么原因造成的吗?

【问题讨论】:

    标签: image matlab user-interface


    【解决方案1】:

    检查图片的大小、类型(可能是uint8)和范围。听起来由于某种原因,您的图像以 colormap 作为 jet (默认值)显示,并且可能您的范围不是 MATLAB 所期望的(例如 0 到 1 而不是 0 到 255),导致您的所有值都是相对较低(jet colormap 上的蓝色)。

    “黑白”只是解释仅包含两种颜色的图像文件的一种方式。当您将数据传递到像 image 这样的显示函数时,MATLAB 会做出几个假设。如果您不指定颜色图和图像数据范围,它将根据数据类型等内容进行猜测。

    一种可能性是您的徽标文件是索引图像。在这些情况下,您需要这样做:

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

    【讨论】:

    • 谢谢,我猜这是一个索引图像,因为我使用了您建议的代码,并且徽标现在按预期显示!
    • 我刚刚意识到这又产生了一个新问题!我之前着色的其余人物现在是黑白的?
    • 类型为 uint8。 cdata 大小为 500x542,颜色图大小为 16x3。
    • 如果您有多个不同的图像要显示在一个图形/gui 中,其中一些是 rgb(真彩色)并且一些是索引的,请使用 imfinfo 检查每个图像类型,并更改索引图像使用 ind2rgb 转换为 rgb
    • 恐怕当我使用 imfinfo 时会得到:'使用 imfinfo 时出错(第 80 行)预期 FILENAME 是这些类型之一:char 相反,它的类型是 uint8。'
    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2011-12-19
    相关资源
    最近更新 更多