2013-03-20 2 views
1

Я разработал приложение для Android для конкретного планшетного устройства с разрешением экрана 800 * 480. Цель проекта - захватить изображение (с обнаружением лица). Для этого я использовал opencv2.4.2 sdk для захвата изображения (используется образец обнаружения лица opencv). В этом устройстве камера доступна в правом нижнем углу. Таким образом, я снял изображение с режимом обратного портрета (используя транспонирование изображения).Проблема с открытием камеры с открытым диском в мобильном устройстве

The code snippet is below: 
    @Override 
    protected Bitmap processFrame(VideoCapture capture) { 
     FdActivity.mSquaredImage = 0; 
     resolution = 0; 
     capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA); 
     capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);   
     Core.transpose(mRgba, mRgba); 
     Core.transpose(mRgba, mGray); 
     ..... 
     ..... 
     return bmp; 
    } 

Он отлично работает в планшете для Android.

Теперь я хочу использовать свое приложение с мобильным устройством. Поэтому я тестировал его с SAMSUNG GALAXY S II.

И у меня есть одна проблема.

The following code is to open the camera. 
    The code snippet is below: 
    public boolean openCamera() { 
     Log.i(TAG, "openCamera"); 
     synchronized (this) { 
      releaseCamera(); 
      mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID); 
      if (!mCamera.isOpened()) { 
       mCamera.release(); 
       mCamera = null; 
       Log.e(TAG, "Failed to open native camera"); 
       return false; 
      } 
     } 
     return true; 
    } 

Этот код открывает переднюю камеру в планшете. Но в SAMSUNG GALAXY S II он открывает заднюю камеру. Для этого я искал в opencv.org форуме, и я получил следующее решение,

 mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID+1); 

Теперь он открывает переднюю камеру в Samsung Galaxy S II. Но в планшете я получил «невозможно открыть камеру» ошибка. что может быть проблемой. И я тестировал устройство Android Android для Android. Но он показывает только пустой экран (камера не открыта).

Новое требование - удерживать пользователя с положением камеры в верхней части устройства. Если они вращают устройство, экран и изображение не должны вращаться.

Очень срочно. Может кто-нибудь поможет мне исправить это?

ответ

2

Устройства Android могут иметь несколько камер (спереди или сзади). Лучший способ справиться с этой ситуацией - сначала проверить количество камер и то, как они выглядят, вместо использования фиксированного идентификатора камеры. Например, если вы ищете фронтальную камеру, вы можете использовать следующее:

Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
int cameraCount = Camera.getNumberOfCameras(); 
for (int camIdx = 0; camIdx < cameraCount; camIdx++) 
{ 
    Camera.getCameraInfo(camIdx, cameraInfo); 
    if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) 
    { 
    mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID+camIdx); 
    break; 
    } 
} 
Смежные вопросы