如何在Matlab中将Java Android中的双字节数组类型转换为图像?
我目前正在进行在线SfM,我需要将Android手机上的图像流发送到Matlab。我已经设法通过TCP/IP套接字编程从Android向Matlab发送了数字节的数据,但我无法将其转换为图像。我希望映像将保存在目录中,或者如果它可能被SfM管道直接使用,请参见此链接:。我试着用java对其进行解码,如下所述:,但效果不佳。我在“height=jimage.getHeight;”上收到一个错误“来自非结构数组对象的结构内容引用”。你知道如何解决这个问题吗?或者您知道如何在Matlab中正确执行此操作吗 这是我在如何在Matlab中将Java Android中的双字节数组类型转换为图像?,java,android,image,matlab,sockets,Java,Android,Image,Matlab,Sockets,我目前正在进行在线SfM,我需要将Android手机上的图像流发送到Matlab。我已经设法通过TCP/IP套接字编程从Android向Matlab发送了数字节的数据,但我无法将其转换为图像。我希望映像将保存在目录中,或者如果它可能被SfM管道直接使用,请参见此链接:。我试着用java对其进行解码,如下所述:,但效果不佳。我在“height=jimage.getHeight;”上收到一个错误“来自非结构数组对象的结构内容引用”。你知道如何解决这个问题吗?或者您知道如何在Matlab中正确执行此操
doInBackground
方法中的AsyncTask
类中的Java代码:
socket = new Socket();
SocketAddress socketAddress = new InetSocketAddress(host, port);
socket.connect(socketAddress, 2000);
final DataOutputStream dataOutputStream;
final BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
int count = data[0].length;
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.writeInt(count);
dataOutputStream.flush();
out.write(data[0], 0, count);
out.flush();
这是我的Matlab代码:
t = tcpip('0.0.0.0', 8889, 'NetworkRole', 'Server');
set(t,'InputBufferSize', 3000000);
set(t,'Timeout', 30);
disp('Waiting Connection...');
fopen(t);
while(1)
if (t.BytesAvailable > 0)
disp('Connection succeed.');
rawData = fread(t,t.BytesAvailable);
whos rawData;
jimage = javax.imageio.ImageIO.read(java.io.ByteArrayInputStream(rawData));
height = jimage.getHeight;
width = jimage.getWidth;
pixels = reshape(typecast(jimage.getData.getDataStorage, 'uint8'), [3,width,height]);
img = cat(3, ...
transpose(reshape(pixels(3,:,:), [width,height])), ...
transpose(reshape(pixels(2,:,:), [width,height])), ...
transpose(reshape(pixels(1,:,:), [width,height])));
imshow(img);
end
end
fclose(t);
这是我从“世界卫生组织原始数据”中获得的数据样本:
双字节数组类型
。请以这样一个数组的例子开始你的文章。我不知道你在说什么。data[0]
什么是data
?里面有什么?请在代码中显示所有内容。编辑您的帖子。在线SfM`?那是什么?字节数组双精度类型
。请以这样一个数组的例子开始你的文章。我不知道你在说什么。data[0]
什么是data
?里面有什么?请在代码中显示所有内容。编辑您的帖子。在线SfM`?那是什么?
Size: 390964x1
Bytes: 3127712
Class: double