我已使用函数bwlabel
标记图像,如下所示:
[L, num] = bwlabel(I, 8);
对于我正在使用的图片,请说我有20个标签。因此,当您运行unique(L)
时,您将获得最多20个数字列表。
问题在于,当我imwrite(L)
和新写入图像上的运行unique
时,我会将像素的值作为我标记的原始图像中的强度值,而不是标记图像。
我如何imwrite
标记图片,同时将其保留为带标签的图片?
答案 0 :(得分:2)
您可以将图像编写为索引图像(使用色彩映射)
imwrite( L, rand( 256, 3 ), 'myIndexedImage.png' ); % wrirte
阅读
[L cmp] = imread( 'myIndexedImage.png' ); % and you can ignore the colormap
或者,转换为uint8
并将标签保存为灰度(假设您的标签不超过256个)
imwrite( uint8(L), 'myLabels.png' );
阅读
L = imread( 'myLabels.png' );
小心不要使用任何压缩格式(例如,jpg)。