OpenCV3.3深度神经网络DNN模块 实例2:GoogleNet-Caffe模型实现图像分类
1 #include <opencv2/opencv.hpp> 2 #include <opencv2/dnn.hpp> 3 #include <iostream> 4 //使用Googlenet Caffe模型实现图像分类 5 using namespace cv; 6 using namespace cv::dnn; 7 using namespace std; 8 9 String model_bin_file = "D:/opencv3.3/opencv/sources/samples/data/dnn/bvlc_googlenetaffemodel";//模型二进制文件 10 String model_txt_file = "D:/opencv3.3/opencv/sources/samples/data/dnn/bvlc_googlenet.prototxt";//模型文本(描述)文件 11 String labels_txt_file = "D:/opencv3.3/opencv/sources/samples/data/dnn/synset_words.txt";//标签文本文件 12 vector<String> readLabels();//读写文件方法 13 int main(int argc, char** argv) 19 namedWindow("input image", CV_WINDOW_AUTOSIZE); 20 imshow("input image", src); 21 vector<String> labels = readLabels(); 22 //读取Caffe模型 23 Net net = readNetFrCaffe(model_txt_file, model_bin_file); 24 if (net.empty()) 28 //由bvlc_googlenet.prototxt知网络输入层大小为224*224 29 Mat inputBlob = blobFrImage(src, 1.0, Size(224, 224), Scalar(104, 117, 123)); 30 Mat prob; 31 for (int i = 0; i < 10; i++) 35 Mat probMat = prob.reshape(1, 1);//转换成一行多列的分类结果 36 Point classNumber;//最大可能性的分类号 37 double classProb;//最大可能性的概率值 38 minMaxLoc(probMat, NULL, &classProb, NULL, &classNumber); 39 int classidx = classNumber.x; 40 printf("\n current image classification : %s, possible : %.2f", labels.at(classidx)_str(), classProb); 41 //图片上放置文本 红色显示 42 putText(src, labels.at(classidx), Point(20, 20), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(0, 0, 255), 2, 8); 43 imshow("Image Classification", src); 44 45 waitKey(0); 46 return 0; 47 } 48 vector<String> readLabels() 55 string name; 56 while (!fp.eof()) 61 } 62 fplose();//关闭文件输入输出流 return classNames;//返回分类名 64 }
航天飞机,概率100%
山地单车,概率93%
上一篇:OpenCV3.3深度神经网络DNN模块 实例1:读取单张PNG文件(opencv3.3环境测试)
下一篇:OpenCV3.3深度神经网络DNN模块 实例3:SSD模型实现对象检测
OpenCV
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?