IMWRITE followed by IMREAD Changes Pixel Values
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I have an image matrix
aa 150x200x3 720000 double
With pixel values 0-255
Why does this test fail :
imwrite(aa, 'aatest.png');
aanew = imread('aatest.png');
isequal(aa, aanew)
0 Kommentare
Akzeptierte Antwort
Amith Kamath
am 19 Aug. 2013
Bearbeitet: Amith Kamath
am 19 Aug. 2013
I tried this, and I realized that ISEQUAL compares a DOUBLE and UINT8, which quite obviously does not return true.
p = rand(150,200,3);
imwrite(p,'test.png');
pnew = imread('test.png');
isequal(p,pnew)
if you really want to check equality,
isequal(im2uint8(p),pnew)
is the way to go.
0 Kommentare
Weitere Antworten (1)
Image Analyst
am 19 Aug. 2013
I don't believe PNG is meant for doubles, though I could be wrong. Anyway I never try to save color images while in a double class unless it's to a mat file. Try casting your aa array to uint8 before you save it out. I think that's really what you want and intended anyway.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!