4

这里有很多这样的问题,Qt 站点和 OpenCV 站点,但没有一个完全符合我的情况。(无论如何,很多都没有答案。)

我正在使用适用于 Android 2.4.6 的 OpenCV(可从官方网站下载的预构建版本)在带有适用于 Android 的 Qt 5.0.1 的三星 Galaxy Note 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 示例?

非常感谢您的帮助!

4

1 回答 1

1

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

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

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

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

于 2013-08-09T08:24:02.207 回答