【发布时间】:2011-08-20 00:45:44
【问题描述】:
我在相机对象 (mCamera) 上运行以下代码,以检测相机指向的任何人脸。问题是虽然这个过程非常快,但它确实减慢了应用程序的其余部分,即当我在这个面部检测运行时按下按钮做某事时,注册它大约需要半秒钟。我的想法是,我会以某种方式减慢或减少它在特定时间内的回调次数,然后按此按钮会快得多:
Thread thread = new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
mCamera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(final byte[] _data, Camera _camera) {
Camera.Parameters parameters = mCamera.getParameters();
int format = parameters.getPreviewFormat();
// YUV formats require more conversion
if (format == ImageFormat.NV21) {
int w = parameters.getPreviewSize().width;
int h = parameters.getPreviewSize().height;
// Get the YuV image
YuvImage yuv_image = new YuvImage(_data, format, w, h, null);
// Convert YuV to Jpeg
Rect rect = new Rect(5 * w / 10, 1 * h / 5, 8 * w / 10, 4 * h / 5);
final ByteArrayOutputStream output_stream = new ByteArrayOutputStream();
yuv_image.compressToJpeg(rect, 10, output_stream);
// Convert from Jpeg to Bitmap
Bitmap bmp = Bitmap.createScaledBitmap(BitmapFactory.decodeByteArray(output_stream.toByteArray(), 0, output_stream.size()), 3 * w / 10, 3 * h / 5, true);
detectFaces(bmp, w, h);
}
}
});
}
});
thread.start();
它已经在一个线程中,因为我认为这可能会有所帮助,但实际上并没有。有没有办法改变回叫频率?
【问题讨论】:
标签: java android callback camera