Error while changing image bit depth in MATLAB
1 次查看(过去 30 天)
显示 更早的评论
I'm trying to convert RGB image with some bit depth to BMP image of bit depth 8. here is my code
a = imread('DSC01684_5.bmp');
[x,map] = rgb2ind(a,32);
imwrite(x,map,'C:\Documents and Settings\Home\Desktop \DSC01684_5.bmp.','bitdepth', 8);
and I'm getting error like
??? Error using ==> imformats>find_in_registry at 507
Format specifier must be a 1-D character array.
Error in ==> imformats at 114
varargout{1} = find_in_registry(fmts, varargin{1});
Error in ==> imwrite>get_format_from_filename at 550
fmt_s = imformats(ext);
Error in ==> imwrite at 389
format = get_format_from_filename(filename);
is the error in imwrite function or in changing bit depth?
However if i use
output_filename = 'C:\Documents and Settings\Home\Desktop\DSC01684_5.bmp.'
imwrite(x, map, output_filename, 'bmp', 'bitdepth', 8);
I'm getting error like
??? Error using ==> imagesci\private\writebmp
Too many input arguments
Error in ==> imwrite at 429
feval(fmt_s.write, data, map, filename, paramPairs{:});
0 个评论
采纳的回答
Jan
2013-6-5
编辑:Jan
2013-6-5
The first error is caused by the trailing dot in "DSC01684_5.bmp.", such that omitting it allows to recognize the file type by the extension.
Because RGB2IND replies an UINT8 for 32 colors, you do not have to specify the bitdepth explicitly:
file = 'C:\Documents and Settings\Home\Desktop\DSC01684_5.bmp'
imwrite(x, map, file);
imfinfo(file)
% >> ... BitDepth: 8
0 个评论
更多回答(1 个)
Walter Roberson
2013-6-5
'bitdepth' only applies to JPEG and PNG formats. There are no supported options for bmp files.
2 个评论
Walter Roberson
2013-6-6
imwrite() chooses the depth from the datatype in this situation. It only allows that automatic depth choice to be overridden via the 'bitdepth' option for JPEG and PNG
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Acquisition Using Any Hardware 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!