我一直在研究一个移动应用程序,它分析框架以查找特定对象。处理太重了,我不断得到
05-08 17:44:24.909: I/Choreographer(31606): Skipped 114 frames! The application may be doing too much work on its main thread.
所以我将图像处理切换到线程,现在它更快但我无法识别任何对象。数据(不同的帧)没有更新,我不知道为什么。这是我在伪代码中所做的( SurfaceHolder.Callback ,Camera.PreviewCallback 和 camera.addCallbackBuffer(data) 已实现)
public void onPreviewFrame(byte[] data, Camera camera)
{
Imageprocessor np = new ImageProcessor(data);
np.start()
results = np.getResults();
}
从我到目前为止所做的调试中,我知道开始是分析整个框架,但是 . 数据没有更新,它一直堆叠在第一帧。如果我像这样在主线程中执行此操作,则不会发生这种情况,
public void onPreviewFrame(byte[] data, Camera camera)
{
Imageprocessor np = new ImageProcessor();
np.process(data)
results = np.getResults();
}
这有效,但它迫使我跳过很多帧。答案可能很简单,但我在网上找不到。
如果我发布一个非常菜鸟的问题,请原谅我
提前致谢