簡體   English   中英

如何使用WebSocketServer提高Java Computer Vision的性能?

[英]How can I increase performance of Java Computer Vision using WebSocketServer?

@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);
}

我正在嘗試將網絡攝像頭流(從javascript客戶端接收到的字節數組)轉換為IplImage對象,以便可以使用JavaCV。 我編寫了這段代碼,從我的網絡攝像頭獲取幀並發送回聲,但性能非常慢(10 FPS)。 我真的是計算機視覺和圖像處理的新手,也許我做錯了什么。 如果您有任何想法可以加快速度,我想聽聽他們的意見。

嘗試替換此代碼

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

Arrays.copyOfRange(..)調用。 這將大大減少所需的數據移動量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM