1

以前に正しく質問したかどうかわからないため、この質問を再投稿します:) 顔検出を含むアプリに取り組んでいます。カメラは正常に起動します。プレビュー フレーム コールバック内で、faceview オブジェクトをインスタンス化します (このクラスは検出を処理します)。このクラスはビットマップ内の顔しか検出できませんが、コールバックからの画像は YuvImage です。画像を jpeg に圧縮してから、その jpeg をビットマップに変換するメソッドを呼び出したので、検出が機能します。

私が抱えている問題は、私が使用しているYuvImageに関してclassnotfoundexceptionがあるとEclipseが言っていることです。yuvimage が含まれている api8 をダウンロードしました。ソース コードにエラーはなく、正常にコンパイルされます。Eclipse が yuvimage クラスを読み込めない理由はありますか? ここにスニペットがあります、ありがとう。

'コード'

BitmapFactory.Options bfo = new BitmapFactory.Options();
bfo.inPreferredConfig = Bitmap.Config.RGB_565;
Rect rectangle = new Rect(0, 0, width, height);
ByteArrayOutputStream bos = new ByteArrayOutputStream(imageData.length);
try{
    img = new YuvImage(imageData,ImageFormat.NV21,width,height,null);
}catch(Exception e){
    e.printStackTrace();
}
img.compressToJpeg(rectangle, 100, bos);
byte[] array = bos.toByteArray();


sourceImage = BitmapFactory.decodeByteArray(array, 0, array.length);

例外トレース:

02-10 11:53:07.298: ERROR/dalvikvm(2364): Could not find class 'android.graphics.YuvImage', referenced from method com.tecmark.FaceView.<init>
02-10 11:53:07.468: ERROR/AndroidRuntime(2364): Uncaught handler: thread main exiting due to uncaught exception
02-10 11:53:07.473: ERROR/AndroidRuntime(2364): java.lang.NoClassDefFoundError: android.graphics.YuvImage
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at com.tecmark.FaceView.<init>(FaceView.java:60)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at com.tecmark.cameraView$1.onPreviewFrame(cameraView.java:111)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at android.hardware.Camera$EventHandler.handleMessage(Camera.java:395)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at android.os.Looper.loop(Looper.java:123)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at android.app.ActivityThread.main(ActivityThread.java:4363)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at java.lang.reflect.Method.invokeNative(Native Method)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at java.lang.reflect.Method.invoke(Method.java:521)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):     at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

2

SDKの適切なバージョンをターゲットにしていることを確認してください。Eclipseでプロジェクトを右クリックし、[プロパティ]、[Android]の順に選択します。プロジェクトのビルドターゲットとしてApi8を選択する必要があります。

マニフェストxmlで最小のSDK属性も設定する必要があります(ただし、これはエラーとは関係ありません)。

于 2011-02-10T12:20:27.077 に答える
1

パッケージcom.tecmark.FaceViewがプロジェクトで使用できることを確認してください。次のようなもの:
package com.tecmark.FaceViewこのファイルのコードの先頭にあるはずです。

HTH、
スリラム

于 2011-02-10T12:22:39.490 に答える