无法在安卓上使用C++ OpenCV 打开相机

Can't open camera using C++ OpenCV on android

本文关键字:OpenCV C++ 相机      更新时间:2023-10-16

我正在尝试将一个非常简单的OpenCV应用程序移动到Android上。该代码尝试从与使用 C# 和 Xamarin 的主应用程序链接的 C++ .so 库访问相机,我怀疑这与我的问题有任何关系。我的C++代码只是尝试使用 cv::VideoCapture 访问相机,如下所示:

    cv::VideoCapture cap(0); //default camera
    if(!cap.isOpened())
    {
        LOGE("No camera detected on this systemn");
    }

但是,尽管我在 AndroidManifest 中指定了权限,但这总是失败.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.XamarinARapp">
  <uses-sdk android:minSdkVersion="15" />
  <application android:label="XamarinARapp.Android">
  </application>
  <uses-permission android:name="android.permission.CAMERA"/>
  <uses-feature android:name="android.hardware.camera" android:required="false"/>
  <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
  <uses-feature android:name="android.hardware.camera.front" android:required="false"/>
  <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
</manifest>

有没有人成功地在C++中使用cv::VideoCapture访问Android相机?Xamarin与它有什么关系吗?

但是该应用程序是为Android 4.4构建

的。

清单 SDK 版本应如下所示:

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" />

否则,如果没有在 API 23+ 设备上设置和运行targetSdkVersion,则需要请求运行时相机权限。