#include <iostream>
#include <fstream>
int main(int argc, char **argv)
{
if (argc < 2) {
std::cout << "usage: <IMG_1> <IMG_2> ... <IMG_N>" << std::endl;
return 1;
}
std::shared_ptr<face_sdk::alignment> alignment;
std::shared_ptr<face_sdk::builder> builder;
std::shared_ptr<face_sdk::serializer> serializer;
std::vector<std::string> file_names_without_ext;
try {
std::vector< std::shared_ptr< face_sdk::face > > faces;
for (int i = 1; i < argc; i++) {
std::string file_path;
file_path.assign(argv[i]);
auto pos = file_path.rfind('.', 0);
file_names_without_ext.push_back(file_path.substr(0, pos));
faces.push_back(face);
}
auto align_results = alignment->calc_alignment(faces);
auto firs = builder->build(align_results);
for (int i = 1; i < argc; i++) {
{
auto fac_data = serializer->serialize_face(faces[i], true);
auto face_file_name = file_names_without_ext[i] + ".fac";
std::ofstream stream;
stream.open(face_file_name, std::ios::binary);
stream.write((char*)fac_data.data(), fac_data.size());
}
{
auto alg_data = serializer->serialize_alignment_info(align_results[i]);
auto align_info_file_name = file_names_without_ext[i] + ".alg";
std::ofstream stream;
stream.open(align_info_file_name, std::ios::binary);
stream.write((char*)alg_data.data(), alg_data.size());
}
{
auto fir_data = serializer->serialize_fir(firs[i]);
auto fir_file_name = file_names_without_ext[i] + ".fir";
std::ofstream stream;
stream.open(fir_file_name, std::ios::binary);
stream.write((char*)fir_data.data(), fir_data.size());
}
}
}
std::cerr << face_sdk::format_exception(exp) << std::endl;
try {
std::rethrow_if_nested(exp);
}
catch (const face_sdk::version_not_available_exception &nested) {
std::cerr << nested.what() << std::endl;
}
catch (const face_sdk::license_exception &nested) {
std::cerr << nested.what() << std::endl;
}
catch (const std::exception &nested) {
std::cerr << nested.what() << std::endl;
}
return 2;
}
return 0;
}