移动设备中的Android opencv相机旋转问题

标签 android opencv camera

我已经为屏幕分辨率为 800 * 480 的特定平板设备开发了一个 android 应用程序。该项目的目标是捕获图像(使用人脸检测)。为此,我使用 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;
    }

它在安卓平板电脑上运行良好。

现在我想在移动设备上使用我的应用程序。所以我用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 中的前置摄像头。但是在平板电脑上我遇到了“无法打开相机”错误。可能是什么问题。我用 HTC desire android 设备进行了测试。但它只显示空白屏幕(相机未打开)。

新要求是用户握住设备顶部的摄像头位置。如果他们旋转设备,屏幕和图像不应旋转

非常紧急。有人可以帮我解决这个问题吗?

最佳答案

Android 设备可以有多个摄像头(前置或后置)。处理这种情况的最佳方法是首先检查摄像头的数量和朝向,而不是使用固定的摄像头 ID。例如,如果您正在寻找前置摄像头,您可以使用以下内容:

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;
  }
}

关于移动设备中的Android opencv相机旋转问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15517525/

相关文章:

android - NestedScrollView 和 RecyclerView 即使没有嵌套也没有滚动?

使用相机后尝试编辑图片时,Android 新照片应用程序崩溃

java - 从 arm linux 上的 CMOS 相机读取流并将其转换为视频/照片

opencv - CMake错误:CUDA_cublas_LIBRARY(高级)

java - 我可以使用TextureView同时显示相机预览和检测到的线吗?

ios - 如何在从主函数返回值之前等待委托(delegate)函数完成

java - 如何通过 Android 发送 Flash(通知)短信?

java - 如何让 WebView 保持视频或音频在后台播放?

android - Android 中的自定义语言环境

svn - 先前操作未完成的问题