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();
}
示例#2
0
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();
    }
示例#3
0
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;
}