Ejemplo n.º 1
0
void read3DConfiguration(const std::string &filename, bool omitOtherTags) {
    mOmitOtherTags = omitOtherTags;

    cv::FileStorage configuration(filename, cv::FileStorage::READ);
    if (!configuration.isOpened()) {
        std::cerr << "Could not open " << filename << std::endl;
        return;
    }

    mId2Configuration.clear();
    for(const auto &objectConfig : configuration.root()) {
        for(const auto &tagConfig : objectConfig) {
            int id;
            tagConfig["tag"] >> id;
            float size;
            tagConfig["size"] >> size;
            int keep;
            tagConfig["keep"] >> keep;
            cv::Vec3f translation;
            cv::Vec3f rotation;
            for (int i : {0,1,2}) {
                tagConfig["translation"][i] >> translation[i];
                tagConfig["rotation"]   [i] >> rotation   [i];
            }

            mId2Configuration[id] = std::make_pair(
                objectConfig.name(),
                TagConfig(id, size, keep, cv::Vec3f(translation), cv::Vec3f(rotation)));
        }
    }
}
Ejemplo n.º 2
0
bool read3DConfiguration(const std::string &filenameOrString, bool omitOtherTags, bool readFromString) {
    mOmitOtherTags = omitOtherTags;

    int mode;
    if(readFromString)
        mode = cv::FileStorage::READ + cv::FileStorage::MEMORY;
    else
        mode = cv::FileStorage::READ;

    cv::FileStorage configuration(filenameOrString, mode);
    if (!configuration.isOpened()) {
        if(readFromString){
            std::cerr << "Could not read tag configuration: " << std::endl;
            std::cerr << filenameOrString << std::endl;
        }
        else
            std::cerr << "Could not open file: " << filenameOrString << std::endl;
        return false;
    }

    mId2Configuration.clear();
    auto rootNode = configuration.root();
    auto objectConfig = rootNode.begin();
    for (; objectConfig != rootNode.end(); ++objectConfig)
    {
    // for(const auto &objectConfig : configuration.root()) {
    	auto tagConfig = (*objectConfig).begin();
        for(; tagConfig != (*objectConfig).end(); ++tagConfig) {
//        for(const auto &tagConfig : objectConfig) {
            int id;
            (*tagConfig)["tag"] >> id;
            float size;
            (*tagConfig)["size"] >> size;
            int keep;
            (*tagConfig)["keep"] >> keep;
            cv::Vec3f translation;
            cv::Vec3f rotation;
            for (int i = 0; i < 3; i++) {
                (*tagConfig)["translation"][i] >> translation[i];
                (*tagConfig)["rotation"]   [i] >> rotation   [i];
            }

            mId2Configuration[id] = std::make_pair(
                (*objectConfig).name(),
                TagConfig(id, size, keep, cv::Vec3f(translation), cv::Vec3f(rotation)));
        }
    }

    return true;
}