imwrite写入是double的0-1.或者uint8。imwread输出一定是uint8
clear;clc;
dataHH = [1,2;3,4];
%imwrite保存值的范围在0——1,注意unit8类型的255,matlab认为其值是1,并不是255
imwrite(dataHH,'测试读取.png');
%imread读取默认unit8,读出来的结果都是255,错了
img = imread('测试读取.png');
imwrit输入值范围是0-1,用unit8类型,虽然写的是0——255,但是matlab将其看作0——1
imwrite输入的范围是0——1(uint8 0-255也是0-1数值),得到的图片像素值是0-255,在PS中显示。
imread就直接读取像素值,也就是对应的uint8数字的大小
两种正确的保存方法
clear;clc;
dataHH = [1,2;3,4];
dataHH = dataHH./4;
%imwrite保存值的范围在0——1,注意unit8类型的255,matlab认为其值是1,并不是255
imwrite(dataHH,'测试读取.png');
%imread读取默认unit8,读出来的结果都是255,错了
img = imread('测试读取.png');
输出结果是[64,128;191,255],unit8数据大小的矩阵,正确。如果想要0-1的数据,可以转化为double
clear;clc;
dataHH = [1,2;3,4];
dataHH =uint8 (dataHH./4.*255);
%imwrite保存值的范围在0——1,注意unit8类型的255,matlab认为其值是1,并不是255
imwrite(dataHH,'测试读取.png');
%imread读取默认unit8,读出来的结果都是255,错了
img = imread('测试读取.png');
输出结果是[64,128;191,255],unit8数据大小的矩阵,正确