我为 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 渴望 android 设备进行了测试。但它只显示黑屏(相机未打开)。
新的要求是用户拿着相机的位置在设备的顶部。如果他们旋转设备,屏幕和图像不应该旋转。
这是非常紧急的。请问有人可以帮我解决这个问题吗?