如何在MATLAB中将数据类型uint16
的图像写入文件?我尝试使用以下命令写入文件,但它给我一个错误
imwrite(pimg, 'h44', 'jpg')
使用writejpg时出错> set_jpeg_props(第183行)
UINT16图像数据需要专门设置为bitdepth 12或16 writejpg出错(第49行)
props = set_jpeg_props(data,varargin {:});
imwrite中的错误(第472行)
feval(fmt_s.write,data,map,filename, paramPairs {:});
image16bit出错(第666行)
imwrite(imgnew1,'h44','jpg');
答案 0 :(得分:2)
保存超过8位的JPEG图像时,必须指定BitDepth
选项:
% note that 16-bit only accepts grayscale images
img = imread('peppers.png');
imwrite(im2uint16(img), '12bit.jpg', 'BitDepth',12);
imwrite(rgb2gray(im2uint16(img)), '16bit.jpg', 'BitDepth',16);
不幸的是,没有多少程序支持12位/ 16位JPEG图像,因此您可能无法在外部打开它。您可以使用JPEG2000格式:
imwrite(im2uint16(img), 'out.jp2');