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
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图