#include <iostream>
#include <fstream>
#include <vector>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/dnn.hpp>
using namespace std;
using namespace cv;
using namespace dnn;
int main(int argc, char** argv) {
// 加载网络结构和权重文件
String model_file = "model.pb";
String weight_file = "weights.pb";
Net net = readNetFromTensorflow(model_file, weight_file);
// 加载测试图像
String image_file = "test.jpg";
Mat image = imread(image_file);
// 进行预处理
Mat blob = blobFromImage(image, 1.0, Size(224, 224), Scalar(), true, false);
net.setInput(blob);
// 进行前向推理
Mat output = net.forward();
// 获取预测结果
Mat predictions = output.reshape(1, 1);
Point classIdPoint;
double confidence;
minMaxLoc(predictions, NULL, &confidence, NULL, &classIdPoint);
int classId = classIdPoint.x;
// 加载标签文件
String label_file = "labels.txt";
ifstream ifs(label_file.c_str());
string line;
vector<string> labels;
while (getline(ifs, line)) {
labels.push_back(line);
}
// 输出预测结果
cout << "Predicted class: " << labels[classId] << endl;
cout << "Confidence: " << confidence << endl;
// 显示测试图像
imshow("Test Image", image);
waitKey(0);
return 0;
}