Matlab存图全白全黑?用imshow(I,[])正常显示,但I=uint8(mat2gray(I));imwrite(I,'1.bmp','bmp');结果错
2个回答
展开全部
如果imshow正常的话,直接imwrite就可以了。为什么要转换来转换去呢?
imshow(I); % 正常显示
imwrite(I, 'I.bmp'); % 肯定结果正常
imshow(I); % 正常显示
imwrite(I, 'I.bmp'); % 肯定结果正常
追问
imshow(I)显示全白,imshow(I,[])才能正常显示。用imwrite(I, 'I.bmp')保存的图片还是全白/全黑。到底怎么改?
追答
那看来就是你数据的动态范围不对了。I是几通道的图像?
如果是1通道,那么mat2gray就可以了。imshow看看对不对,如果还是不正常,imhist一下看看灰度分布是否正常;注意,图像间做数据类型转换要用im2uint8,而不是uint8,否则也是动态范围出错,当然实际根本不需要这一步。
如果是3通道,假如I是double类型的,我觉得直接im2uint8就可以搞定;如果是uint8,那么im2double就可以了;后续验证步骤同上。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询