示例#1
0
bool FaceTracerFileReader::loadFaceindex(const int faceId, std::string filename, std::string foldername)
{
    std::cout << "loadFaceindex ('" << faceId << ", " << foldername << ", " << filename << "')" << std::endl;

    FaceTracerFileData faceTracerData;
    faceTracerData.faceId = boost::lexical_cast<std::string> (faceId);

    // returns stats from line by faceId
    vector<std::string> stats = getLineById(faceId, filename);
    if (stats.size() == 0) {
       std::cerr << "Error: No face id: " << faceId << " in file: " << filename << " found! " <<  std::endl;
       return false;
    }

    boost::format fmt("%06d");
    fmt % faceId;
    std::string faceIdString = boost::lexical_cast<std::string>(fmt);

    faceTracerData.faceindexFilename = filename;
    faceTracerData.faceIdFilename = faceIdString + ".jpg";
    faceTracerData.imageFoldername = foldername;
    // faceTracerData.faceIdFilename = stats.at(0); // imgurl;
    // faceTracerData.faceIdFilename = stats.at(1); // pageurl;

    m_faceTracerDataMap.insert(std::pair<int, FaceTracerFileData> 
                (boost::lexical_cast<int> (faceId), faceTracerData));

	return true;
}
示例#2
0
	bool DBTools::getLineByGps(Point3D & point,OUT std::vector<Line>& vLine)
	{
		int pointid = getIdByPoint(point);
		if(pointid == 0)
			return false;
		std::stringstream ss_id;
		ss_id<<pointid;

		std::string sql="select a.line_id from line a,shape_points b where a.line_id = b.line_id and ( a.from_point="+ss_id.str()+" or a.to_point="+ss_id.str()+" or b.point_id="+ss_id.str()+" );";
		int res=mysql_query(&myCont,sql.c_str());
		if(!res)
		{
			MYSQL_RES *result = mysql_store_result(&myCont);
			if(mysql_num_rows(result))
			{
				MYSQL_ROW sql_row;
				Line lineTemp;
				while(sql_row=mysql_fetch_row(result))
				{
					getLineById(atoi(sql_row[0]),lineTemp);
					vLine.push_back(lineTemp);
				}
			}
			mysql_free_result(result);
			return true;
		}
		return false;
	}
示例#3
0
bool FaceTracerFileReader::loadFacelabel(const int faceId, std::string filename)
{    
    std::cout << "loadFacelabel ('" << faceId << ", " << filename << "')" << std::endl;

    //find entry with same key
    std::map<int, FaceTracerFileData>::iterator it;
    it = m_faceTracerDataMap.find(boost::lexical_cast<int>(faceId));
    
    FaceTracerFileData faceTracerData;
    if (it != m_faceTracerDataMap.end()) {
        faceTracerData = it->second;
        m_faceTracerDataMap.erase(it);
    } else {
        std::wcerr << "Warning: No image for facelabels entry found -> rejected File: " << faceId << std::endl;
        return false;
    }

    faceTracerData.numFacelabels = FaceTracerFileData::numAttributeFileFeatureCodes;
    faceTracerData.facelabelFilename = filename;

	faceTracerData.sex = FaceMetadata::UNDEFINED;
	faceTracerData.glasses = FaceMetadata::UNDEFINED;
	faceTracerData.occluded = FaceMetadata::UNDEFINED;
	faceTracerData.bw = FaceMetadata::UNDEFINED;

    // returns stats from line by faceId
    vector<std::string> stats = getLineById(faceId, filename);
    while (stats.size() > 1)
    {
        std::string label = stats.back();
        stats.pop_back();
        std::string attribute = stats.back();
        stats.pop_back();

		if (attribute.compare("gender") == 0) {
			faceTracerData.sex = label.compare("male") ? FaceMetadata::FEMALE : FaceMetadata::MALE;
			std::cout << "eingetragen-> " << faceTracerData.sex << std::endl;
		} else if (attribute.compare("eye_wear") == 0) {
			faceTracerData.glasses = label.compare("none") ? FaceMetadata::CHECKED : FaceMetadata::UNCHECKED;
			std::cout << "eingetragen-> " << faceTracerData.glasses << std::endl;
		} else {

		}
    }

    m_faceTracerDataMap.insert(std::pair<int, FaceTracerFileData> 
                (boost::lexical_cast<int> (faceId), faceTracerData));

	return true;
}
示例#4
0
bool FaceTracerFileReader::loadFacestats(const int faceId, std::string filename)
{
    std::cout << "loadFacestats ('" << faceId << ", " << filename << "')" << std::endl;
    
    //find entry with same key
    std::map<int, FaceTracerFileData>::iterator it;
    it = m_faceTracerDataMap.find(boost::lexical_cast<int>(faceId));
    
    FaceTracerFileData faceTracerData;
    if (it != m_faceTracerDataMap.end()) {
        faceTracerData = it->second;
        m_faceTracerDataMap.erase(it);
    } else {
        std::wcerr << "Warning: No image for facestats entry found -> rejected File: " << faceId << std::endl;
        return false;
    }

    faceTracerData.numFacestats = FaceTracerFileData::numFeaturesFileFeatureCodes;
    faceTracerData.facestatsFilename = filename;

    // returns stats from line by faceId
    vector<std::string> stats = getLineById(faceId, filename);
    if (stats.size() == 0) {
       std::cerr << "Error: No face id: " << faceId << " in file: " << filename << " found! " <<  std::endl;
       return false;
    }

    if ((stats.size() + 1) < faceTracerData.numFieldCodes) {
        return false;
    }

    faceTracerData.crop = cv::Rect(utils::convertToInt(stats.at(2)), utils::convertToInt(stats.at(3)), utils::convertToInt(stats.at(0)), utils::convertToInt(stats.at(1)));
    faceTracerData.yaw = utils::convertToFloat(stats.at(4)) * RAD;
	faceTracerData.pitch = utils::convertToFloat(stats.at(5)) * RAD;
    faceTracerData.roll = utils::convertToFloat(stats.at(6)) * RAD;

    for (int i = 0;  i < faceTracerData.numFacestats; i++)
    {      
        double xCoord = utils::convertToDouble(stats.at(7 + (2 * i))) + faceTracerData.crop.x;
        double yCoord = utils::convertToDouble(stats.at(7 + (2 * i) + 1)) + faceTracerData.crop.y;

        faceTracerData.facestats.push_back(std::pair<double, double> (xCoord, yCoord));
    }
   
    m_faceTracerDataMap.insert(std::pair<int, FaceTracerFileData> 
                (boost::lexical_cast<int> (faceId), faceTracerData));

	return true;
}