int main( ) { //加载模型 ncnn::Net squeezenet; squeezenet.load_param("mobilefacenet/mobilefacenet.param"); squeezenet.load_model("mobilefacenet/mobilefacenet.bin"); string readImgPartDir = "D:\\faceData\\";//读取图片路径 string personName;//人名文件夹 string imgName;//具体图片名(*.jpg) string readImg;//图片完成路径 = 读取图片路径+人名文件夹+具体图片名 FILE* f = fopen("D:\\Feature.txt", "wt"); if (f == NULL) { printf("文件打开失败!\n"); } else { printf("文件打开成功!\n"); } std::ifstream fin("D:\\数据\\餐饮测试\\faceData\\0.txt");//打开原始样本图片文件列表 string readLineName;//从txt中读取的名字 cv::Mat image; while (getline(fin, readLineName)) { //cout << "readLineName = "<< readLineName << endl; imgName = readLineName.substr(readLineName.find_last_of("\\") + 1); //cout << "imgName = " << imgName << endl; personName = readLineName.substr(0, readLineName.find_first_of("\\")); //cout << "personName = " << personName << endl; readImg = readImgPartDir + personName + "\\" + imgName;//输入图片 //cout << "readImg = " << readImg << endl; image = cv::imread(readImg, 1); //cout << "channels = " << image.channels() << endl; //cout << "image w=" << image.cols << ",h=" << image.rows << endl; if (image.empty()) { printf("--(!) No captured frame -- Break!"); continue; } else { //float *featFace = new float[128]; ncnn::Extractor ex = squeezenet.create_extractor(); ncnn::Mat in = ncnn::Mat::from_pixels_resize(image.data, ncnn::Mat::PIXEL_BGR2RGB, image.cols, image.rows, 112, 112); ex.input("data", in); ncnn::Mat out; ex.extract("fc1", out); for (int j = 0; j < out.w; ++j) { //featFace[j] = out[j]; std::fprintf(f, "%f ", out[j]); } std::fprintf(f, "%s", ","); std::fprintf(f, "%s", personName); std::fprintf(f, "%s", "\n"); //delete[] featFace; } }//end while fclose(f); return 0; }