Exemple #1
0
    void
    object_recognition_core::db::DummyDocument::set_attachment<cv::linemod::Detector>(const AttachmentName& attachment_name,
                                                                                 const cv::linemod::Detector& value)
    {
      // First write the class to a file
      std::string file_name = temporary_yml_file_name(true);
      {
        cv::FileStorage fs(file_name, cv::FileStorage::WRITE);
        value.write(fs);
        std::vector < std::string > ids = value.classIds();
        fs << "classes" << "[";
        for (int i = 0; i < (int) ids.size(); ++i)
        {
          fs << "{";
          value.writeClass(ids[i], fs);
          fs << "}"; // current class
        }
        fs << "]"; // classes
        fs.release();
      }

      // Read the file as a stream
      std::ifstream reader(file_name.c_str());
      std::stringstream out;
      out << reader.rdbuf();

      set_attachment_stream(attachment_name, out, MIME_TYPE);
      boost::filesystem::remove(file_name.c_str());
    }
Exemple #2
0
    void
    object_recognition_core::db::Document::get_attachment<shape_msgs::Mesh>(
        const AttachmentName &attachment_name, shape_msgs::Mesh &value) const
    {
      // Get the binary file
      std::string file_name = temporary_yml_file_name(false);
      std::stringstream ss;
      this->get_attachment_stream(attachment_name, ss, MIME_TYPE);

      // Write it to disk
      std::ofstream writer(file_name.c_str());
      writer << ss.rdbuf() << std::flush;

      // Read it
      //value.read(file_name);
      //boost::filesystem::remove(file_name.c_str());
    }
    void
    yaml2mats(std::map<std::string, cv::Mat>& mm,std::istream& in, bool do_gzip)
    {
      std::string fname = temporary_yml_file_name(do_gzip);
      {
        std::ofstream writer(fname.c_str());
        writer << in.rdbuf();
      }
      {
        cv::FileStorage fs(fname, cv::FileStorage::READ);

        typedef std::pair<std::string, cv::Mat> pair_t;
        BOOST_FOREACH(const pair_t& x, mm)
            {
              fs[x.first] >> mm[x.first];
            }
      }
    void
    object_recognition_core::db::Document::get_attachment<transpod::PoseEstimator>(const AttachmentName &attachment_name,
                                                                                   transpod::PoseEstimator &value) const
    {
      // Get the binary file
      std::string file_name = temporary_yml_file_name(true);
      std::stringstream ss;
      this->get_attachment_stream(attachment_name, ss, MIME_TYPE);

      // Write it to disk
      std::ofstream writer(file_name.c_str());
      writer << ss.rdbuf() << std::flush;

      // Read it
      value.read(file_name);
      boost::filesystem::remove(file_name.c_str());
    }
Exemple #5
0
    void
    object_recognition_core::db::DummyDocument::get_attachment<std::vector<cv::Mat> >(const AttachmentName& attachment_name,
                                                                                 std::vector<cv::Mat> &value) const
    {
      // Get the binary file
      std::string file_name = temporary_yml_file_name(false);
      std::stringstream ss;
      this->get_attachment_stream(attachment_name, ss, MIME_TYPE);

      // Write it to disk
      std::ofstream writer(file_name.c_str());
      writer << ss.rdbuf() << std::flush;

      // Read it
      cv::FileStorage fs(file_name, cv::FileStorage::READ);
      cv::FileNode matrices = fs["matrices"];
      matrices >> value;

      boost::filesystem::remove(file_name.c_str());
    }
    void
    object_recognition_core::db::Document::set_attachment<transpod::PoseEstimator>(const AttachmentName &attachment_name,
                                                                                   const transpod::PoseEstimator &value)
    {
      // First write the class to a file
      std::string file_name = temporary_yml_file_name(true);
      {
        cv::FileStorage fs(file_name, cv::FileStorage::WRITE);
        value.write(fs);
        fs.release();
      }

      // Read the file as a stream
      std::ifstream reader(file_name.c_str());
      std::stringstream out;
      out << reader.rdbuf();

      set_attachment_stream(attachment_name, out, MIME_TYPE);
      boost::filesystem::remove(file_name.c_str());
    }
Exemple #7
0
    void
    object_recognition_core::db::DummyDocument::set_attachment<std::vector<cv::Mat> >(const AttachmentName& attachment_name,
                                                                                 const std::vector<cv::Mat>& value)
    {
      // First write the class to a file
      std::string file_name = temporary_yml_file_name(false);
      {
        cv::FileStorage fs(file_name, cv::FileStorage::WRITE);
        fs << "matrices" << value;

        fs.release();
      }

      // Read the file as a stream
      std::ifstream reader(file_name.c_str());
      std::stringstream out;
      out << reader.rdbuf();

      set_attachment_stream(attachment_name, out, MIME_TYPE);
      boost::filesystem::remove(file_name.c_str());
    }
Exemple #8
0
    void
    object_recognition_core::db::DummyDocument::get_attachment<cv::linemod::Detector>(const AttachmentName& attachment_name,
                                                                                 cv::linemod::Detector& value) const
    {
      // Get the binary file
      std::string file_name = temporary_yml_file_name(true);
      std::stringstream ss;
      this->get_attachment_stream(attachment_name, ss, MIME_TYPE);

      // Write it to disk
      std::ofstream writer(file_name.c_str());
      writer << ss.rdbuf() << std::flush;

      // Read it
      cv::FileStorage fs(file_name, cv::FileStorage::READ);
      value.read(fs.root());

      cv::FileNode fn = fs["classes"];
      for (cv::FileNodeIterator i = fn.begin(), iend = fn.end(); i != iend; ++i)
        value.readClass(*i);

      // Delete the tmp file
      boost::filesystem::remove(file_name.c_str());
    }