如何使用WebSocketServer提高Java计算机视觉的性能?

如何使用WebSocketServer提高Java计算机视觉的性能?,java,websocket,computer-vision,Java,Websocket,Computer Vision,我正在尝试将从javascript客户端接收的网络摄像头流字节数组转换为IplImage对象,以便使用JavaCV。我写了这段代码,从我的网络摄像头中提取帧并发送回一个回声,但性能非常慢,每秒10帧。我对计算机视觉和图像处理非常陌生,也许我做错了什么。如果你有什么想法可以加快速度,我想听听 尝试替换此代码 @OnWebSocketMessage public void onMessage(byte[] data, int offset, int length) throws IOExceptio

我正在尝试将从javascript客户端接收的网络摄像头流字节数组转换为IplImage对象,以便使用JavaCV。我写了这段代码,从我的网络摄像头中提取帧并发送回一个回声,但性能非常慢,每秒10帧。我对计算机视觉和图像处理非常陌生,也许我做错了什么。如果你有什么想法可以加快速度,我想听听

尝试替换此代码

@OnWebSocketMessage
public void onMessage(byte[] data, int offset, int length) throws IOException {                          

    //convert packet to output stream
    ByteArrayOutputStream byteArrayImg = new ByteArrayOutputStream();
    byteArrayImg.write(data, offset, length);
    //convert output stream to bytearray
    byte[] byteArray = byteArrayImg.toByteArray();
    //creating iplimage instance from byte array
    iplimage = cvDecodeImage(cvMat(1, byteArray.length,CV_8UC1, new BytePointer(byteArray)));
    /* HERE GOES FACE RECOGNITION OR SOMETHING */
    //iplimage back to outputstream
    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    BufferedImage imgb = iplimage.getBufferedImage();
    ImageIO.write(imgb, "png", bout);
    //sendig back echo packet to javascript client
    ByteBuffer buf = ByteBuffer.wrap(bout.toByteArray());
    this.session.getRemote().sendBytes(buf);
}
打个电话。这将大大减少所需的数据移动量

ByteArrayOutputStream byteArrayImg = new ByteArrayOutputStream();
byteArrayImg.write(data, offset, length);
byte[] byteArray = byteArrayImg.toByteArray();