Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取NDK项目android studio中位于drawable的图像的绝对路径 我试图把图像路径传递给我的C++文件,用于将图像用于图像处理,但是我现在无法处理它。在我的主活动中,我得到了这样的路径: Uri path; String pathS; path = Uri.parse("android.resource://com.sfarbac.rtmatching/" + R.drawable.elli); pathS = path .toString(); 我通过这个路径到C++文件: nativeClass.detectAndMatch(_mRgba.getNativeObjAddr(), _trick.getNativeObjAddr(), pathS); JNIEXPORT jint JNICALL Java_com_sfarbac_rtmatching_nativeClass_detectAndMatch (JNIEnv *env, jclass obj, jlong addrRgba, jlong addrTrick, jstring path){ Mat& camPic = *(Mat*)addrRgba; Mat& camTric = *(Mat*)addrTrick; const jsize len = env->GetStringUTFLength(path); const char* strChars = env->GetStringUTFChars(path, (jboolean *)0); string Result(strChars, len); camTric = imread (Result.c_str(), CV_LOAD_IMAGE_GRAYSCALE); if(! camTric.data ) { __android_log_print(ANDROID_LOG_ERROR, "TRACKERS", "%s", "Can not load image"); //return -1; } //cvtColor(camTric, camPic, CV_RGBA2GRAY); env->ReleaseStringUTFChars(path, strChars); return 1;_Android_C++_Image_Android Ndk - Fatal编程技术网

获取NDK项目android studio中位于drawable的图像的绝对路径 我试图把图像路径传递给我的C++文件,用于将图像用于图像处理,但是我现在无法处理它。在我的主活动中,我得到了这样的路径: Uri path; String pathS; path = Uri.parse("android.resource://com.sfarbac.rtmatching/" + R.drawable.elli); pathS = path .toString(); 我通过这个路径到C++文件: nativeClass.detectAndMatch(_mRgba.getNativeObjAddr(), _trick.getNativeObjAddr(), pathS); JNIEXPORT jint JNICALL Java_com_sfarbac_rtmatching_nativeClass_detectAndMatch (JNIEnv *env, jclass obj, jlong addrRgba, jlong addrTrick, jstring path){ Mat& camPic = *(Mat*)addrRgba; Mat& camTric = *(Mat*)addrTrick; const jsize len = env->GetStringUTFLength(path); const char* strChars = env->GetStringUTFChars(path, (jboolean *)0); string Result(strChars, len); camTric = imread (Result.c_str(), CV_LOAD_IMAGE_GRAYSCALE); if(! camTric.data ) { __android_log_print(ANDROID_LOG_ERROR, "TRACKERS", "%s", "Can not load image"); //return -1; } //cvtColor(camTric, camPic, CV_RGBA2GRAY); env->ReleaseStringUTFChars(path, strChars); return 1;

获取NDK项目android studio中位于drawable的图像的绝对路径 我试图把图像路径传递给我的C++文件,用于将图像用于图像处理,但是我现在无法处理它。在我的主活动中,我得到了这样的路径: Uri path; String pathS; path = Uri.parse("android.resource://com.sfarbac.rtmatching/" + R.drawable.elli); pathS = path .toString(); 我通过这个路径到C++文件: nativeClass.detectAndMatch(_mRgba.getNativeObjAddr(), _trick.getNativeObjAddr(), pathS); JNIEXPORT jint JNICALL Java_com_sfarbac_rtmatching_nativeClass_detectAndMatch (JNIEnv *env, jclass obj, jlong addrRgba, jlong addrTrick, jstring path){ Mat& camPic = *(Mat*)addrRgba; Mat& camTric = *(Mat*)addrTrick; const jsize len = env->GetStringUTFLength(path); const char* strChars = env->GetStringUTFChars(path, (jboolean *)0); string Result(strChars, len); camTric = imread (Result.c_str(), CV_LOAD_IMAGE_GRAYSCALE); if(! camTric.data ) { __android_log_print(ANDROID_LOG_ERROR, "TRACKERS", "%s", "Can not load image"); //return -1; } //cvtColor(camTric, camPic, CV_RGBA2GRAY); env->ReleaseStringUTFChars(path, strChars); return 1;,android,c++,image,android-ndk,Android,C++,Image,Android Ndk,我从本机代码中获取路径信息,如下所示: nativeClass.detectAndMatch(_mRgba.getNativeObjAddr(), _trick.getNativeObjAddr(), pathS); JNIEXPORT jint JNICALL Java_com_sfarbac_rtmatching_nativeClass_detectAndMatch (JNIEnv *env, jclass obj, jlong addrRgba, jlong addrTrick,

我从本机代码中获取路径信息,如下所示:

nativeClass.detectAndMatch(_mRgba.getNativeObjAddr(), _trick.getNativeObjAddr(), pathS);
 JNIEXPORT jint JNICALL 
 Java_com_sfarbac_rtmatching_nativeClass_detectAndMatch
(JNIEnv *env, jclass obj, jlong addrRgba, jlong addrTrick, jstring path){

Mat& camPic = *(Mat*)addrRgba;
Mat& camTric = *(Mat*)addrTrick;

const jsize len = env->GetStringUTFLength(path);
const char* strChars = env->GetStringUTFChars(path, (jboolean *)0);
string Result(strChars, len);

camTric = imread (Result.c_str(), CV_LOAD_IMAGE_GRAYSCALE);
if(! camTric.data )
{
    __android_log_print(ANDROID_LOG_ERROR, "TRACKERS", "%s", "Can not load image");
    //return -1;
}
//cvtColor(camTric, camPic, CV_RGBA2GRAY);
env->ReleaseStringUTFChars(path, strChars);

return 1;
}

我不能在这里加载图像。我收到错误“无法加载图像”。
如果我将图像放在资产文件夹中,我知道我找不到它们,因为这些图像放在apk文件中。我如何克服这个问题。谢谢。

资源和资产是开发机器上的文件。它们不是设备上的文件

我不清楚为什么用户在他们的设备上对预编译的图像执行图像处理会有用。在其他地方这样做似乎更有意义,比如在开发机器上。或者,对来自用户的图像执行图像处理,而不是预编译的图像

也就是说:

    > p>将您的C++代码改编为能够使用java <代码>输入流< /> >,或

    < L> > P>将资源或资产的字节复制到您控制的文件(例如,在<代码> GETCACEDIRE()/CUT>中),然后使用C++代码

    使用该文件的路径