我想打开Android平板电脑的相机并从C级获取相机中的数据。之后,我将修改数据,C级将是有效的。
现在我正在考虑使用V4L2 C代码。但我发现V4L2的开放功能需要摄像机名称的参数,例如'/ dev / video0'。但是我在平板电脑的dev文件夹中找不到类似的东西。此外,我不确定使用V4L2是否是正确的解决方案。
有人对此有所了解吗?
答案 0 :(得分:1)
“OpenCV for Android”在“本机”模式和“java”模式下都不提供所需的性能。它在1920x1080中给出FPS = 2,同时java MediaRecorder可以用FPS = 15记录1920x1080
我正在尝试使用本机Camera应用程序使用的Android开源项目代码来解决它:
static void android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz,
jobject weak_this, jint cameraId)
{
sp<Camera> camera = Camera::connect(cameraId);
if (camera == NULL) {
jniThrowRuntimeException(env, "Fail to connect to camera service");
return;
}
// make sure camera hardware is alive
if (camera->getStatus() != NO_ERROR) {
jniThrowRuntimeException(env, "Camera initialization failed");
return;
}
jclass clazz = env->GetObjectClass(thiz);
if (clazz == NULL) {
jniThrowRuntimeException(env, "Can't find android/hardware/Camera");
return;
}
// We use a weak reference so the Camera object can be garbage collected.
// The reference is only used as a proxy for callbacks.
sp<JNICameraContext> context = new JNICameraContext(env, weak_this, clazz, camera);
context->incStrong(thiz);
camera->setListener(context);
// save context in opaque field
env->SetIntField(thiz, fields.context, (int)context.get());
}
答案 1 :(得分:0)
您始终可以为Java类构建JNI方法以从C进行访问。另一种方法是使用OpenCV for Android:OpenCV4Android
这为您提供了相机界面,但据我记忆,目前不支持Android 4.3 +。