OpenCV错误:imread()没有加载我的图片

时间:2017-06-11 17:03:28

标签: android-studio opencv machine-learning android-ndk java-native-interface

我正在编写一个Android应用程序,允许用户拍摄数字图片然后返回屏幕上的数字。我在Android Studio中用C ++编写,我使用的是OpenCV库。

我加载图片:

cv::imread("C:\\Users\\Cornee\\Downloads\\OpenCVApp\\test.jpg",0);

然后我检查它是否有效:

if(image.empty()) {
    std::string x = "Picture is not loaded!";
    return env->NewStringUTF(x.c_str());
}

当我运行应用程序时,它会返回'图片未加载'。我试图将图片粘贴到多个目录中。我也尝试对链接进行硬编码,就像我在上面给出的代码中所做的那样。

整个代码:

JNIEXPORT jobject
Java_com_example_cornee_opencv_MainActivity_testImage(JNIEnv *env, jobject /* this */) {

    // Load SVM classifier
    cv::Ptr<cv::ml::SVM> svm = cv::ml::StatModel::load<cv::ml::SVM>("classifier.yml");

    // read image file (grayscale)
        cv::Mat image = cv::imread("C:\\Users\\Cornee\\Downloads\\OpenCVApp\\test.jpg",0);

    // check if image is empty
    if(image.empty()) {
        std::string x = "Picture is not loaded!";
        return env->NewStringUTF(x.c_str());
    } else {
        // convert 2d to 1d
        cv::Mat one = image.clone().reshape(1,1);
        one.convertTo(one, CV_32F);

        try{
            float predicted = svm->predict(one);
            std::ostringstream ss;
            ss << predicted;
            std::string s(ss.str());
            return env->NewStringUTF(s.c_str());
        }catch(cv::Exception ex){

        }
    }
}

编辑:甚至我的分类器都没有正确加载。所以我认为我的文件本地化存在问题

0 个答案:

没有答案