matlab中如何保存(imwrite)二值化的图片,只有0和1两个值的?

a=[1,1,1,1,1,1,1,1,1,1,1;0,0,0,0,0,0,0,0,0,0,0;1,1,1,1,1,1,1,1,1,1,1;0,0,0,0,0,0,0,0,... a=[1,1 ,1,1,1,1,1,1,1,1,1;0 ,0, 0,0,0,0,0,0,0,0,0;1,1,1,1,1,1,1,1,1,1,1;
0,0,0,0,0,0,0,0,0,0,0;1,1,1,1,1,1,1,1,1,1,1;0,0,0,0,0,0,0,0,0,0,0];一张图片如上数组a所示,只有1和0两个值组成,我想把它保存起来,如果直接保存,那么再读入时就全部都是0和255的分布。将其转换成uint8类型(之所以要转换,是因为我要保存的图片很大,double型数据溢出),用imwrite(a,'1.bmp');之后,图像是黑色的,这种保存方式可能是灰度范围取的是0到255,我想请教一下,怎么样将只有0和1两个值的uint8图片保存起来,并且能够正常显示(不会是全黑)?
那么如何将uint8类型的矩阵a保存成0和1,输出也是0和1呢?
展开
 我来答
酷呆爱死呆
2011-01-20 · TA获得超过4240个赞
知道大有可为答主
回答量:507
采纳率:100%
帮助的人:1152万
展开全部
a矩阵中的值是0和1,不知道是什么类型,如果是double型的话你把它转化成uint8的话,那就是它的灰度值就是0和1,你保存后显示当然是黑色;如果是uint8型的话,灰度值0-255,那么0和1肯定是黑色。
我在matlab中输入a矩阵,系统认为它是double型,imwrite(a,'a.bmp');读入保存后的图像如下:
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
你如果想要0和1的话,直接将读入的图像im2double下,结果如下:
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
如果你将a转化成uint8型,再保存,结果如下:
a=uint8(a)
a =
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0%%转化后,灰度值就为0和1,显示a肯定为全黑
>> imwrite(a,'a.bmp')
>> d=imread('D:\Program Files\work\a.bmp')
d =
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0%%读入的d也为uint8型
杨好巨蟹座
2015-10-22 · TA获得超过5万个赞
知道大有可为答主
回答量:6197
采纳率:80%
帮助的人:1308万
展开全部
a矩阵中的值是0和1,不知道是什么类型,如果是double型的话你把它转化成uint8的话,那就是它的灰度值就是0和1,你保存后显示当然是黑色;如果是uint8型的话,灰度值0-255,那么0和1肯定是黑色。
我在matlab中输入a矩阵,系统认为它是double型,imwrite(a,'a.bmp');读入保存后的图像如下:
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
你如果想要0和1的话,直接将读入的图像im2double下,结果如下:
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
如果你将a转化成uint8型,再保存,结果如下:
a=uint8(a)
a =
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0%%转化后,灰度值就为0和1,显示a肯定为全黑
>> imwrite(a,'a.bmp')
>> d=imread('D:\Program Files\work\a.bmp')
d =
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0%%读入的d也为uint8型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
569746080
2011-01-20 · TA获得超过191个赞
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
a矩阵中的值是0和1如果是double型的话你把它转化成uint8的话,那就是它的灰度值就是0和1,你保存后显示当然是黑色;如果是uint8型的话,灰度值0-255,那么0和1肯定是黑色。
我在matlab中输入a矩阵,系统认为它是double型,imwrite(a,'a.bmp');读入保存后的图像如下:
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
255 255 255 255 255 255 255 255 255 255 255
0 0 0 0 0 0 0 0 0 0 0
你如果想要0和1的话,直接将读入的图像im2double下,结果如下:
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
如果你将a转化成uint8型,再保存,结果如下:
a=uint8(a)
a =
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0%%转化后,灰度值就为0和1,显示a肯定为全黑
>> imwrite(a,'a.bmp')
>> d=imread('D:\Program Files\work\a.bmp')
d =
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0%%读入的d也为uint8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aiiaaag
2019-07-03
知道答主
回答量:1
采纳率:0%
帮助的人:726
展开全部
保存为png格式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不是人5号
2011-01-20 · TA获得超过2315个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:150万
展开全部
不用他了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式