MTCNN批量读取图片进行人脸和关键点检测,并保存检测结果
2017-07-10 14:52
387 查看
本博客在上一篇博客基础上添加了批量处理图片的功能,上一篇博客:
Windows下cmake编译caffe,实现纯C++版本MTCNN人脸检测和关键点定位
作者提供的程序是读取摄像头视频,而我需要读取图片,且利用txt文件批量读取图片,分别对每一张图片进行人脸检测和人脸关键点检测,并保存检测结果(也可以显示每张图片效果图)。使用时,替换原来的main.cpp即可。 主要知识点:流处理,opencv图片读取,显示和保存。流处理:添加头文件: #include<fstream> , 打开txt文件逐行读取,最后关闭;opencv三个函数: imread(),imshow(),imwrite()。txt文件内容形式:002.jpg 090.jpg 1_30000.jpg 1_56000.jpg test1.jpg test10.jpg test11.jpg test12.jpg test13.jpg test14.jpg test15.jpg test16.jpg test2.jpg test21.jpg test23.jpg test25.jpg test26.jpg test27.jpg test3.jpg test36.jpg test37.jpg test4.jpg test50.jpg test6.jpg test7.jpg test8.jpg test9.jpg源代码:
#include <iostream>#include <fstream>#include <string>#include "MTCNN.h"#include "opencv2/opencv.hpp"using namespace std;using namespace cv;int main() {vector<string> model_file = {"./MTCNN/model/det1.prototxt","./MTCNN/model/det2.prototxt","./MTCNN/model/det3.prototxt"// "./MTCNN/model/det4.prototxt"};vector<string> trained_file = {"./MTCNN/model/det1.caffemodel","./MTCNN/model/det2.caffemodel","./MTCNN/model/det3.caffemodel"// "./MTCNN/model/det4.caffemodel"};string a;ifstream infile; //使用流,逐行读取txt中图片名。infile.open("./MTCNN/result/fd-test/name.txt");string img_path = "./MTCNN/result/fd-test/";MTCNN mtcnn(model_file, trained_file);while (infile){infile >> a;string img_dir = img_path + a; //string字符串拼接,得到完成图片路径cout << img_dir << endl;Mat img = imread(img_dir);vector<Rect> rectangles;vector<float> confidences;std::vector<std::vector<cv::Point>> alignment;mtcnn.detection(img, rectangles, confidences, alignment);for (int i = 0; i < rectangles.size(); i++){rectangle(img, rectangles[i], cv::Scalar(255, 0, 0), 2);for (int j = 0; j < alignment[i].size(); j++){cv::circle(img, alignment[i][j], 5, cv::Scalar(255, 255, 0), 2);}}string save_dir = "./MTCNN/result/fd-result/" + a;imwrite(save_dir, img); //保存图片//imshow("image", img);//waitKey(0.5);}infile.close();std::cout << "Hello, World!" << std::endl;return 0;}
相关文章推荐
- 基于Qt与OpenCV的图片读取、保存,并利用Canny进行简单的边缘处理结果显示
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- opencv从摄像头读取视频并实时进行人脸检测代码
- 用python对minist数据集进行读取并保存成图片
- Java将图片作为二进制进行保存和读取
- OpenCV读入图片序列进行HOG行人检测并保存为视频
- 基于Boost方法的人脸检测(2):样本生成(切割图像、resize图像、灰度化图像、保存图片)
- 用dlib和opencv进行不同角度人脸检测及68个关键点提取(Python)
- 使用OpenCV进行人脸关键点检测
- vs下opencv的人脸检测以及qt下dll的封装调用(一、opencv下的人脸检测以及图片的保存)
- VTK读取序列的Dicom医学图片,用Marchingcube进行重建,并保存为obj文件
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 人脸老化之三Dlib库进行人脸关键点检测
- Opencv与dlib联合进行人脸关键点检测与识别【转】
- 在sklearn上读取人脸数据集保存图片到本地
- 毕业设计——人脸检测——004 学习别人代码——《matlab读取一个目录下的所有图片》
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- OpenCV读入图片序列进行HOG行人检测并保存为视频