im2uint8 only generates 0 or 255
4 次查看(过去 30 天)
显示 更早的评论
I am trying to present an image of class double using imshow.
suppose this is the image:
a = [78.4630409671845,90,0;
78.4630409671845,36.8698976458440,62.5135737496187;
0,0,0]
now when I try to convert it to uint8 in order to show it, this is what I get:
b = im2uint8(a) = [255,255,0;
255,255,255;
0,0,0]
but I expect something like this:
b = [78,90,0;
78,37,63;
0,0,0]
so the imshow command shows a weird black an white image:
imshow(a);
imshow(a,[]);
imshow(b);
imshow(b,[]);
How can I properly present a double image?
0 个评论
采纳的回答
Jan
2021-2-10
编辑:Jan
2021-2-10
im2uint8 expects the input to be an RGB image, which is a 3D array with values from 0 to 1. So normalize your data at first by dividing by 255:
a = [78.4630409671845,90,0;
78.4630409671845,36.8698976458440,62.5135737496187;
0,0,0]
im2uint8(a / 255)
2 个评论
Steven Lord
2021-2-11
Or even more simply, just call uint8 on it.
a = [78.4630409671845,90,0;
78.4630409671845,36.8698976458440,62.5135737496187;
0,0,0];
aJan = im2uint8(a / 255)
aSteve = uint8(a)
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!