[英]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.