我一直在尝试在 Android Studio 中集成/使用 OpenCV。但我一直遇到这个错误。
C:\AndroidStudioProjects\IntegrateOpenCV341\app\src\main\res\values\colors.xml:1:1: Error: Content is not allowed in prolog.
我曾尝试使用:
OpenCV-2.4.9-Android-SDK
原因:大多数教程(已过时)都适用于此版本
OpenCV-3.4.1-Android-SDK
原因: 版本号为最新教程(2018 年 8 月)
OpenCV-3.4.6-Android-SDK
原因:OpenCV sdk android 的第二个最新版本
OpenCV-4.1.0-Android-SDK
原因:截至目前最新版本的 OpenCV sdk android
我完成了以下步骤,没有出现错误:
- 导入模块(在项目中)
- 添加依赖项
- 编辑 OpenCV 的 build.gradle 的 compileSdkversion 和 targetSdkversion 以与应用程序的 build.gradle 匹配
- 创建一个名为 jniLibs 的 Native 文件夹(JNI 文件夹),并将 sdk>native>libs 里面的文件复制到其中
输入此代码来
MainActivity.java
检查它是否有效*package com.example.integrateopencv249; //also tried with 3.4.1 and 4.1.0 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; import org.opencv.android.OpenCVLoader; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(OpenCVLoader.initDebug()) { Toast.makeText(getApplicationContext(), "OpenCV successfully loaded", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(getApplicationContext(), "OpenCV failed to load", Toast.LENGTH_SHORT).show(); } } }
但当我运行完最后一步后,它就失败了。
这是 color.xml 里面的内容(与所有版本的 OpenCV sdk 相同)
package org.opencv.core;
import java.util.Arrays;import java.util.List;
public class MatOfRect extends Mat {// 32SC4private static final int _depth = CvType.CV_32S;private static final int
这些是我的 Android Studio 的详细信息:
Android Studio 3.3.2
Build #AI-182.5107.16.33.5314842, built on February 16, 2019
JRE: 1.8.0_152-release-1248-b01 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
(All of the SDK Tools are installed)
我尝试寻找此问题的解决方案,但没有一个对我的情况有帮助。请帮助我 :( 我是一个完全的初学者,我真的想开始学习如何在 Android Studio 中使用 OpenCV。我很感激任何帮助或建议。
注意:第一步之后我没有继续使用 OpenCV 4.1.0,因为模块名称仅显示“java”,并且不会像之前的所有其他版本一样自动更新为“openCVLibrary410”格式。
答案1
错误是由未解析的代码引起的,不仅在 color.xml 中,而且在所有 xml 文件中都是如此。通过以正确的格式编写正确的内容来解决。