void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement("stream:features"); writeFeature(writer, "bind", ns_bind, m_bindMode); writeFeature(writer, "session", ns_session, m_sessionMode); writeFeature(writer, "auth", ns_authFeature, m_nonSaslAuthMode); writeFeature(writer, "starttls", ns_tls, m_tlsMode); if (!m_compressionMethods.isEmpty()) { writer->writeStartElement("compression"); writer->writeAttribute("xmlns", ns_compressFeature); for (int i = 0; i < m_compressionMethods.size(); i++) { writer->writeStartElement("method"); switch (m_compressionMethods[i]) { case QXmppConfiguration::ZlibCompression: writer->writeCharacters("zlib"); break; } writer->writeEndElement(); } writer->writeEndElement(); } if (!m_authMechanisms.isEmpty()) { writer->writeStartElement("mechanisms"); writer->writeAttribute("xmlns", ns_sasl); for (int i = 0; i < m_authMechanisms.size(); i++) { writer->writeStartElement("mechanism"); switch (m_authMechanisms[i]) { case QXmppConfiguration::SASLPlain: writer->writeCharacters("PLAIN"); break; case QXmppConfiguration::SASLDigestMD5: writer->writeCharacters("DIGEST-MD5"); break; case QXmppConfiguration::SASLAnonymous: writer->writeCharacters("ANONYMOUS"); break; case QXmppConfiguration::SASLXFacebookPlatform: writer->writeCharacters("X-FACEBOOK-PLATFORM"); break; } writer->writeEndElement(); } writer->writeEndElement(); } writer->writeEndElement(); }
void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const { writer->writeStartElement("stream:features"); writeFeature(writer, "bind", ns_bind, m_bindMode); writeFeature(writer, "session", ns_session, m_sessionMode); writeFeature(writer, "auth", ns_authFeature, m_nonSaslAuthMode); writeFeature(writer, "starttls", ns_tls, m_tlsMode); if (!m_compressionMethods.isEmpty()) { writer->writeStartElement("compression"); writer->writeAttribute("xmlns", ns_compressFeature); foreach (const QString &method, m_compressionMethods) writer->writeTextElement("method", method); writer->writeEndElement(); }
void writeFeature(const char *name, const std::vector<float> feature, bool remove_0_flg ){ std::vector< std::vector<float> > tmp( 1 ); tmp[ 0 ] = feature; writeFeature( name, tmp, remove_0_flg ); }
//******************************** //* main int main( int argc, char* argv[]) { if( argc != 4 ) { std::cerr << "usage: " << argv[0] << " [path] [label] <registration_num>" << std::endl; exit( EXIT_FAILURE ); } const int file_num = atoi( argv[3] ); char tmpname[ 1000 ]; //* length of bounding box sides (initialize) float size1 = 0; float size2 = 0; float size3 = 0; float vals[3]; //* read rotate_num sprintf( tmpname, "%s/param/parameters.txt", argv[1] ); const int rotate_num = Param::readRotateNum( tmpname ); //* read the number of voxels in each subdivision's side of a target object const int subdivision_size = Param::readBoxSizeModel( tmpname ); //* read the length of voxel side const float voxel_size = Param::readVoxelSize( tmpname ); //* read the threshold for RGB binalize int color_threshold_r, color_threshold_g, color_threshold_b; sprintf( tmpname, "%s/param/color_threshold.txt", argv[1] ); Param::readColorThreshold( color_threshold_r, color_threshold_g, color_threshold_b, tmpname ); //* Voxel Grid pcl::VoxelGrid<pcl::PointXYZRGB> grid; grid.setLeafSize (voxel_size, voxel_size, voxel_size); grid.setSaveLeafLayout(true); //******************************// //* C3-HLAC feature extraction *// //******************************// int write_count = 0; std::vector< std::vector<float> > c3_hlac; for( int n = 0; n < file_num; n++ ) { printf("%d in %d...\n",n,file_num); pcl::PointCloud<pcl::PointXYZRGB> ref_cloud; sprintf( tmpname, "%s/models/%s/Points/%05d.pcd", argv[1], argv[2], n ); pcl::io::loadPCDFile (tmpname, ref_cloud); //* rotate point clouds synthetically to T postures //* T postures: obtained by rotation with each (90/$rotate_num) degrees for x-, y- and z-axis. for(int r3=0; r3 < rotate_num; r3++) { for(int r2=0; r2 < rotate_num; r2++) { for(int r1=0; r1 < rotate_num; r1++) { const double roll = r3 * M_PI / (2*rotate_num); const double pan = r2 * M_PI / (2*rotate_num); const double roll2 = r1 * M_PI / (2*rotate_num); //* voxelize pcl::PointCloud<pcl::PointXYZRGB> input_cloud; pcl::PointCloud<pcl::PointXYZRGB> cloud_downsampled; rotatePoints( ref_cloud, input_cloud, roll, pan, roll2 ); // rotation grid.setInputCloud ( input_cloud.makeShared() ); grid.filter (cloud_downsampled); //* extract features extractC3HLACSignature981( grid, cloud_downsampled, c3_hlac, color_threshold_r, color_threshold_g, color_threshold_b, voxel_size, subdivision_size ); sprintf( tmpname, "%s/models/%s/Features/%05d.pcd", argv[1], argv[2], write_count++ ); writeFeature( tmpname, c3_hlac ); //* determine bounding box size getMinMax_points( cloud_downsampled, vals[0], vals[1], vals[2] ); float tmp_size1 = 0; float tmp_size2 = 0; float tmp_size3 = 0; for( int j=0; j<3; j++ ) setSize( tmp_size1, tmp_size2, tmp_size3, vals[ j ] ); if( tmp_size1 > size1 ) size1 = tmp_size1; if( tmp_size2 > size2 ) size2 = tmp_size2; if( tmp_size3 > size3 ) size3 = tmp_size3; if(r2==0) break; } } } } //* output bounding box size sprintf( tmpname, "%s/models/%s/size.txt",argv[1], argv[2] ); FILE *fp = fopen( tmpname, "w" ); fprintf( fp, "%f %f %f\n", size1, size2, size3 ); fclose( fp ); return 0; }