利用html5、websocket和opencv实现人脸检测 (二)

前一篇的代码在执行时,java.exe占用内存会快速上涨:

在4G内存电脑上,单个连接,会持续上涨到2G多,然后减到1G多,如此循环。

 

经过一些删减定位,可以确定问题由public byte[] process(byte data[])函数导致。

进一步分析,至少IplImage的使用是一个问题:

IplImage originalImage = cvDecodeImage(opencv_core.cvMat(1, data.length, CV_8UC1, new BytePointer(data)));

Mat videoMat = new Mat(originalImage);

这里,IplImage主要是作为从byte[]转换为Mat时的过渡,修改为:

Mat videoMat = imdecode(new Mat(opencv_core.cvMat(1, data.length, CV_8UC1, new BytePointer(data))), 1);

 

修改之后,内存仍然会持续上涨,但速度很慢。可能还有其他的问题,后续继续处理。

posted @ 2016-07-15 11:34  平楚荒烟  阅读(2225)  评论(0)    收藏  举报