image - Octave imread() 问题。我不知道为什么他们不同

标签 image octave

我使用8位灰度256x256 lena图片(图3)。

figure; imshow(imread('lena.png'))
figure; imshow(data)
figure; imshow('lena.png')

我认为输出相同,但它们是不同的输出:

enter image description here

我的代码有什么问题?

最佳答案

从对 imshow 的三种不同调用中,正确的调用似乎是您刚刚向其传递文件路径的调用。阅读 imshow 的源代码,您会发现它还读取图像颜色图。

似乎您没有简单的灰度图像,而是有索引图像,因此您应该这样做:

[img, cmap] = imread (...);
imshow (img, cmap);

顺便说一句,在我看来,您正在尝试预先分配图像数据。如果是这样,那你就错了。

# The pre-allocation with zeros here does nothing. Not only does
# imread creates its own new array, its data type will be uint8 while
# zeros is creating one of doubles by default.
data = zeros(256, 256) ;
data = imread('lena.png');  

关于image - Octave imread() 问题。我不知道为什么他们不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66898108/

相关文章:

java - 如何重新设置 BMP 文件的分辨率 (DPI) 指示器?

java - 将背景图像添加到 JPanel

matlab - 如何在 Octave 中绘制隐式曲面?

matlab - 通过字符串名称访问变量

android - 故意使用 setType() 只允许 jpeg 和 png 图像;不是 gif 图片

ios - 如何在没有去拜耳的情况下对 RAW 图像进行下采样以在较小的屏幕上进行编辑?

python - 将动态c lib.so集成到python

algorithm - 自定义函数无法将小数转换为单精度 float

python - 如何制作 5.1 和 7.1 环绕声文件

centos - 如何使用不同版本的gnuplot