如何使用OpenCV + Qt5在Android上设置相机的使用

时间:2013-08-07 16:35:49

标签: android c++ qt opencv

这里有很多这样的问题,Qt网站和OpenCV网站,但它们都不符合我的情况。 (无论如何,很多都没有答案。)

我正在使用OpenCV for Android 2.4.6(可从官方网站下载的预建版本) 使用Qt 5.0.1 for Android在Samsung Galaxy Note 2上构建适用于Android的原生应用程序(4.1.2) (使用QtCreator 2.7.2)在x86_64 Linux主机上。

我已链接到../sdk/native/libs/armeabi-v7a文件夹中的库。 (我没有从源代码构建OpenCV,我只是使用下载的软件包中的内容)。这包括一个libopencv_androidcam.a库。 (我还尝试过libnative_camera_r4.1.1.so共享库。) 我还下载了市场应用程序“OpenCV Manager”。

示例目录中的示例.apks在我的手机上工作,但我没有尝试自己构建它们,因为我没有设置Java开发环境。

启动我的应用程序,其中包含cv::VideoCapture inputCapture(CV_CAM_ANDROID);语句,我收到以下错误,没有摄像头输入:

E/OpenCV::camera(15299): CameraWrapperConnector::connectToLib ERROR: cannot dlopen camera wrapper library
E/OpenCV::camera(15299): Native_camera returned opening error: 4

我的问题:

  • 这应该有用吗?我见过很多 错误报告,但所有与旧的 OpenCV版本和更新/更旧版本 Android版本。奖金积分,如果它 已经看到在这款手机上工作 模型。
  • 下载的OpenCV Android SDK是否可以开箱即用?或者我是否需要使用一些特殊选项从源代码构建OpenCV? (哪些?)
  • 手机本身需要特殊的库版本吗?我是否需要拥有设备的root权限才能使其正常工作?
  • 是否存在使用本机代码而不是Java的Andoid示例?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我将在http://answers.opencv.org处重复我从@Moster用户那里得到的答案:

  

从文件夹中复制libnative_camera_r4.1.1.so   / sdk / native / libs / armeabi-v7a到你的Qt项目的文件夹   /安卓/库/ armeabi-V7A。确保您也允许使用相机   在Qt创建者的android_manifest中。也许这一切都有帮助

这确实有效。虽然我已经在Manifest.xml中提到了相机权限(或者更确切地说是Qt项目设置),但是将共享库复制到项目目录就可以了。

似乎在构建期间找到并链接了它,但未从其原始位置复制到设备。 部署设置中的“将本地Qt库复制到设备”(仅限Qt库?)和OpenCV管理器应用程序(仅在直接从Java代码调用时加载正确的库?)都没有帮助过。