フィルターのクリア

IMWRITE followed by IMREAD Changes Pixel Values

1 回表示 (過去 30 日間)
Ajmal
Ajmal 2013 年 8 月 19 日
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)

採用された回答

Amith Kamath
Amith Kamath 2013 年 8 月 19 日
編集済み: Amith Kamath 2013 年 8 月 19 日
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.

その他の回答 (1 件)

Image Analyst
Image Analyst 2013 年 8 月 19 日
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.

カテゴリ

Help Center および File ExchangeImage Processing Toolbox についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by