#include #include #include #include #include #include #include #include #include #include #include #include const std::string kSashaPath = "./Sasha/"; const std::string kIraPath = "./Ira/"; int getdir (std::string dir, std::vector &files) { using namespace std; DIR *dp; struct dirent *dirp; if((dp = opendir(dir.c_str())) == NULL) { cout << "Error(" << errno << ") opening " << dir << endl; return errno; } while ((dirp = readdir(dp)) != NULL) { std::string name = dirp->d_name; if (name[0] != '.') { files.push_back(string(dirp->d_name)); } } closedir(dp); return 0; } dlib::frontal_face_detector detector = dlib::get_frontal_face_detector(); void process_image(std::string s) { dlib::array2d img; dlib::load_image(img, s); std::vector dets = detector(img); std::cout << s << " " << dets.size() << std::endl; std::vector details(dets.size()); std::transform(dets.begin(), dets.end(), details.begin(), [](auto rect) {return dlib::chip_details(rect);}); dlib::array> crops; dlib::extract_image_chips(img, details, crops); for (auto face : crops) { std::cout << s << " Proceed" << std::endl; save_jpeg ( face, s + "_face.jpg"); } } int main() { std::vector sasha_pics; std::vector ira_pics; getdir(kSashaPath, sasha_pics); getdir(kIraPath, ira_pics); std::transform(sasha_pics.begin(), sasha_pics.end(), sasha_pics.begin(), [](std::string& val) {return kSashaPath + val;}); std::transform(ira_pics.begin(), ira_pics.end(), ira_pics.begin(), [](std::string& val) {return kIraPath + val;}); for(std::string s : sasha_pics) { process_image(s); } for(std::string s : ira_pics) { process_image(s); } return 0; }