图片来自一个1x1Byte[] .NET对象

1次查看(最近30天)
笔名
笔名 2020年5月14日
编辑: 亨利·巴斯2021年3月16日
你好,
所以我得到一个1x1 Byte[] imageHandle 这意味着持有位图图像(我相信它是一个448x501x3的uint8变量)。然而,当我运行以下代码:
uintVar = uint8 (imageHandle);
我得到ans = 1x897832 uint8。
是否有某种功能,我应该运行安排这些位到一个可视的图像?
我已经附加了uintVar。因为matlab没有从。mat文件加载。net对象,所以无法附加imageHandle变量。
6个评论
笔名
笔名 2020年5月14日
哦,糟糕,我很抱歉,我没有意识到我完全忘记附加。mat文件了!
我附加的uintVar var文件是1x897832 uint8。
我还附加了imageHandle。Mat是系统。Byte[]的问题,但matlab不允许你加载它作为一个。net对象。

登录评论。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2020年5月15日
编辑:沃尔特·罗伯森 2020年5月15日
关口= 501;行= 448;
RGBA = flipud(permute(uintVar(41:end),4,cols,rows),[3 2 1]));
imshow (RGBA (:,: 1:3))
9日评论
亨利·巴斯
亨利·巴斯 2021年3月16日
我假设您是通过所提供的. net接口从一个omicron系统读取这些图像数据。字节流只包含在维基百科上描述的位图格式的第二个头,所以你必须将这些偏移值减去14 (matlab为13)。第四个通道只有255,除了最高的行和最左边的列。你可以使用以下方法来消除这个问题:
bmpArrayCorrected = RGBA (:,: 1:3);
rChannel = RGBA (:,: 1);
gChannel = RGBA (:: 2);
bChannel = RGBA (:,:, 3);
rChannel(1) =模式(rChannel,“所有”);
rChannel(: 1) =模式(rChannel,“所有”);
gChannel(1) =模式(gChannel,“所有”);
gChannel(: 1) =模式(gChannel,“所有”);
bChannel(1) =模式(bChannel,“所有”);
bChannel(: 1) =模式(bChannel,“所有”);
% r和b通道在omicron数据中交换,交换它们
bmpArrayCorrected (:,:, 3) = rChannel;
bmpArrayCorrected (:: 2) = gChannel;
bmpArrayCorrected (:,: 1) = bChannel;

登录评论。

更多的答案(0)

下载188bet金宝搏


释放

R2017b

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!