/ /向きを変えると顔が検出されない? - アンドロイド

向きを変えると顔が検出されませんか? - アンドロイド

私は顔の検出に問題があります。デバイスの向きを横から縦に変更すると、顔の検出に失敗します。

私は解決策を見つけることができません。これは私が試したものです:

if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
mCamera = Camera.open(camIdx);
Camera.Parameters params = mCamera.getParameters();
params.set("orientation", "portrait");
//params.set("rotation", 90);
mCamera.setDisplayOrientation(90);
//params.setRotation(90);
//params.setPictureSize(640, 480);
mCamera.setParameters(params);
mCamera.startPreview();
}

私のデバイスの向きを変えるたびに、私は "顔検出を得ました。 誰も助けてください、私はすべてを考えてみましたが、顔を検出できませんでした。

回答:

回答№1は1

あなたがライブ検出を行っているかどうかわからない静止画の場合は顔を検出しようとしている場合に役立ちます。ポートレートモードでカメラから取得した画像をJavaで定義した画像ビューに配置します。画像ビューは背の高いものよりも広いものに設定する必要があります。これで、適切な寸法とポートレートがロードされたimageViewが得られました。このビューを使用して、ビットマップとしてビューを保存します。

view.setDrawingCacheEnabled(true);
Bitmap b = view.getDrawingCache();

結果のビットマップで顔検出を使用します。 これは、faceDetectionが技術的に黒い背景の風景画像を見ているため、うまくいくはずです。 また、顔検出はポートレートモード、期間では機能しません。


回答№2の場合は0
public static void setCameraDisplayOrientation(Activity activity,
int cameraId, android.hardware.Camera camera) {
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 0; break;
case Surface.ROTATION_90: degrees = 90; break;
case Surface.ROTATION_180: degrees = 180; break;
case Surface.ROTATION_270: degrees = 270; break;
}

int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360;  // compensate the mirror
} else {  // back-facing
result = (info.orientation - degrees + 360) % 360;
}
camera.setDisplayOrientation(result);
}