OpenCV for android示例程序显示错误

时间:2012-07-27 08:42:28

标签: android opencv android-ndk

我已经下载了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

2 个答案:

答案 0 :(得分:4)

<@> @ Nolan的回答随后@ Michael的评论为我解决了这个问题。以下是组合步骤:

  1. 在Eclipse中,右键单击您的项目并选择属性(这是在Mac btw上)
  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 ++构建 - 环境

  7. 下添加它
  8. 现在继续通过右键单击您的项目重建索引并选择索引 - 重建
  9. 干杯。

答案 1 :(得分:0)

我遇到了同样的问题,并且能够通过使用以下包含路径解决在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