我想從一臺PC(客戶端)發送圖像文件到另一臺運行MATLAB的服務器(服務器),輸出圖像空出來。從計算機之間發送圖像,從Java到MATLAB
從不同的討論中,我瞭解到主要問題是Java和MATLAB之間的一些「圖像矩陣不匹配」。但是,我並不完全瞭解這個問題。
如果您能給我一些建議,我將不勝感激。
客戶端的Java代碼:
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import javax.imageio.ImageIO;
public class myclientimage
{
public static void main(String args[]) throws IOException
{
BufferedImage img = ImageIO.read(new File("D:\\zzz.jpg"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
baos.flush();
byte[] buffer = baos.toByteArray();
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("192.168.0.102");
System.out.println(buffer.length);
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, IPAddress, 9091);
clientSocket.send(packet);
System.out.println("aaaa");
}
}
服務器的MATLAB代碼:
udpA=udp('192.168.0.104', 9090,'LocalPort', 9091);
fopen(udpA);
A = fread(udpA, 200000);
du = reshape(A,size(A)); % converting vector du to 3d Image array
imwrite(uint8(du), 'du.jpg'); %save our du to file du.jpg
I = imread('du.jpg'); %test if it saved correctly
imshow(I);
fclose(udpA);
這是什麼 「不同的討論」?請提供一個鏈接。 –
我沒有特別的鏈接。我從matlab論壇和隨機博客文章閱讀了一些帖子。 – user1850484
A的值是512x1的兩倍。這顯然不足以繪製圖像。實際圖像尺寸爲307x307x3 uint8。我增加了UDP的buffersize和timeout-interval。還是行不通。 – user1850484