我正在编写一个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){
}
}
}
编辑:甚至我的分类器都没有正确加载。所以我认为我的文件本地化存在问题