【问题标题】:OpenCV for android sample programs showing errorOpenCV for android 示例程序显示错误
【发布时间】:2012-07-25 22:17:03
【问题描述】:

我已经下载了适用于 android 的 OpenCV 项目,并且随附的示例项目包含几个错误.... 只有包含 NDK 代码的项目有错误.... 问题是 C++ 代码显示了很多错误...... jstring 之类的关键字无法识别.. 请帮我解决这个问题... 提前感谢您的宝贵时间

#include <jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <vector>

using namespace std;
using namespace cv;

extern "C" {
JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial3_Sample3View_FindFeatures(JNIEnv* env, jobject, jint width, jint height, jbyteArray yuv, jintArray bgra)
{
    jbyte* _yuv  = env->GetByteArrayElements(yuv, 0);
    jint*  _bgra = env->GetIntArrayElements(bgra, 0);

    Mat myuv(height + height/2, width, CV_8UC1, (unsigned char *)_yuv);
    Mat mbgra(height, width, CV_8UC4, (unsigned char *)_bgra);
    Mat mgray(height, width, CV_8UC1, (unsigned char *)_yuv);

    //Please make attention about BGRA byte order
    //ARGB stored in java as int array becomes BGRA at native level
    cvtColor(myuv, mbgra, CV_YUV420sp2BGR, 4);

    vector<KeyPoint> v;

    FastFeatureDetector detector(50);
    detector.detect(mgray, v);
    for( size_t i = 0; i < v.size(); i++ )
        circle(mbgra, Point(v[i].pt.x, v[i].pt.y), 10, Scalar(0,0,255,255));

    env->ReleaseIntArrayElements(bgra, _bgra, 0);
    env->ReleaseByteArrayElements(yuv, _yuv, 0);
}

}

错误..

Unresolved inclusion: <vector>
Symbol 'std' could not be resolved

【问题讨论】:

  • 您应该发布错误消息和它们对应的代码。
  • @Michael...请查看编辑...
  • 您在使用 Eclipse 吗?如果是这样,您是否尝试过:stackoverflow.com/questions/9375708/…
  • @Michael..是的,我正在使用 eclipse...那个答案并不能解决问题...
  • 你后来重建索引了吗?项目视图 -> 索引 -> 重建,或类似的东西。

标签: android opencv android-ndk


【解决方案1】:

我遇到了同样的问题,并且能够通过使用以下包含路径来解决在遵循 OpenCV 教程时遇到的这些错误和其他错误:

${NDKROOT}/platforms/android-9/arch-arm/usr/include
${ProjDirPath}/../../sdk/native/jni/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/include

【讨论】:

    【解决方案2】:

    @Nolan 的回答和@Michael 的评论为我解决了这个问题。以下是合并的步骤:

    1. 在 Eclipse 中,右键单击您的项目并选择属性(顺便说一句,这是在 mac 上)
    2. 展开C/C++ 常规
    3. 选择路径和符号
    4. 语言 下选择 GNU C++
    5. 应在包含目录

      下定义以下包含
      ${NDKROOT}/platforms/android-9/arch-arm/usr/include
      ${ProjDirPath}/../../sdk/native/jni/include
      ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include
      ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/include
      
    6. 确保将 ${NDKROOT} 定义为环境变量。如果还不行,在C/C++ Build - Environment

    7. 下添加
    8. 现在继续并通过右键单击您的项目并选择 Index - Rebuild 来重建索引

    干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多