OpenCV for android sample programs showing error
android, android-ndk, opencv
Solution
@Nolan's answer followed by @Michael's comment solved it for me. Here are the combined steps:
- In Eclipse, right click on your project and select properties (This is on a mac btw)
- Expand C/C++ General
- Select Paths and Symbols
- Under Languages select GNU C++
The following includes should be defined under Include directories
${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
Make sure ${NDKROOT} is defined as an environment variable. If it's not go ahead and add it under C/C++ Build - Environment
- Now go ahead and rebuild the index by right clicking on your project and select Index - Rebuild
Cheers.
Problem
I have downloaded OpenCV project for android and the sample projects that came bundled with it contains several errors.... Only the projects that contain the NDK code has the errors.... The problem is that the C++ code shows many errors... The keywords like jstring are not recognised.. Kindly help me resolve this issue... Thanking you in advance for your valuable time ``` #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); } } ``` errors.. ``` Unresolved inclusion: <vector> Symbol 'std' could not be resolved ```