我有一台HTC One M8设备,它有2个后置摄像头和一个额外的前置摄像头。我的问题是试图进入第二台后置摄像头;我设法制作了一个同时运行2个摄像头的应用程序(1个前置和1个后置摄像头),但问题是我无法访问第二个后置摄像头。
我试图通过openCV和android camera2访问相机,代码如下:
openCV for Android:
CameraBridgeViewBase mOpenCvCameraView2;
mOpenCvCameraView2.setCameraIndex(int value);
其中值可能为0 - 第一个后置摄像头,1个前置摄像头; 2 - 不适用于后方(100也不起作用,因为我在HTC页面上找到了它)
正常的android代码:
CameraManager manager = (CameraManager) getSystemService( Context.CAMERA_SERVICE);
try {
String[] cameraList = manager.getCameraIdList();
Log.i("Number of cameras", Integer.toString(cameraList.length));
} catch (CameraAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
此代码将打印设备可访问的摄像机数量;但是,它告诉我它只有2个。
那么,有没有人知道我可以做些什么才能进入第二款后置摄像头?
答案 0 :(得分:0)
根据我使用HTC EVO 3D的经验以及此处的一些文章(例如Unable to use both cameras of Evo 4G using OpenCV4Android)中所述,不支持单独访问一个或另一个后置摄像头的选项。您可以从两个相机获得合成图像(立体视图),但就是这样。
答案 1 :(得分:0)
维基百科explains第二个传感器不是真正的相机:
使用由2.0微米像素组成的“UltraPixel”图像传感器(OmniVision OV4688),主摄像头保持相对不变。 UltraPixel传感器已更新,可在照明照片中提供更好的色彩准确度,现在该设备还包括双色调闪光灯。主摄像机配有第二个200万像素深度的现场传感器(OmniVision OV2722),位于主摄像头正上方,作为设备“Duo Camera”系统的一部分。传感器分析照片中元素的距离和位置,并生成深度图,嵌入在每张照片中。
也许有一些后门可以直接访问OV2722传感器,但无论如何都不会给你一个传统的图像。