如何使用OpenCV for Android VideoCapture打开相机

时间:2017-01-15 13:27:24

标签: android c++ android-ndk

我正在使用OpenCV4Android,我正在尝试使用VideoCapture类打开Android相机并在每个捕获的帧上执行进一步处理。

1 个答案:

答案 0 :(得分:0)

您好我正在使用opencv处理android,我很遗憾地告诉您,您无法在cpp中使用opencv打开流。 ndk android没有给任何API访问摄像头,所以opencv无法打开任何流。我曾经看过一次Android 4.4的API如果我记得很清楚,但我没有成功打开任何东西。

由于android 7.0的重新启动你可以访问一些让你有权拍照的C函数,看看这个标题:camera / NdkCameraManager.h。

如果你有一个代码的开头

#include <camera/NdkCameraManager.h>
#include <android/log.h>
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "gandoulf", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "gandoulf", __VA_ARGS__))

void AndroidCamera()
{
ACameraIdList *cameraList; //list of available camera
ACameraManager *cameraManager; // android camera manager
camera_status_t cameraStatus; // enum for the error while using camera


cameraManager = ACameraManager_create(); // instantiate the camera manager
cameraStatus = ACameraManager_getCameraIdList(cameraManager, &cameraList); // get the list of available camera, return enum camera_status_t for the error

if (cameraStatus == ACAMERA_OK) {
    LOGI("cameraList ok\n");
    LOGI("num of camera = %d", cameraList->numCameras);
}
else
    LOGW("ERROR with cameraList\n");
}

有了相机列表,您可以通过标题中的功能正常拍照。