es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lea los datos binarios del archivo PLY utilizando Qt.

Estoy intentando leer datos de este archivo:

View post on imgur.com

que contiene texto ASCII y números de punto flotante almacenados en binario. Estoy intentando leerlo haciendo lo siguiente:

        QTextStream in(file);

    QString line;
    line = in.readLine();
    while (!line.startsWith(QString("element vertex"))) {
        line = in.readLine();
    }
    point_count = line.split(QString(" ")).last().toInt();
    qDebug() << "PC: " << point_count;

    while (line != "end_header") {
        line = in.readLine();
    }

    QDataStream* stream = new QDataStream(file);
    stream->skipRawData(in.pos());
    stream->setFloatingPointPrecision(QDataStream::SinglePrecision);

    float number;
    (*stream) >> number;
    qDebug() << "Float: " << number;

Pero leo -1.98117e+13, lo que supongo que está mal. ¿Qué estoy haciendo mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El fragmento de código proporcionado intenta leer datos de un archivo que tiene datos tanto ASCII como binarios. El archivo se lee utilizando QTextStream para encontrar el número de vértices en la nube de puntos, y luego se salta para encontrar los datos binarios utilizando QDataStream.

    Sin embargo, la salida del código muestra un valor flotante que es incorrecto, lo que podría indicar un problema con la forma en que se están leyendo los datos binarios.

    Una posible razón para este problema podría ser debido al endianness de los datos binarios. Al leer datos binarios en plataformas con diferentes endianness, los datos podrían leerse incorrectamente. Para solucionar este problema, un enfoque podría ser verificar el endianness del sistema y convertir los datos binarios en consecuencia.

    Otra posible razón para el problema podría deberse a suposiciones incorrectas hechas sobre el formato de los datos binarios. Podría ser útil inspeccionar los datos binarios usando un editor hexadecimal para confirmar su formato y asegurarse de que coincida con el formato esperado del código.

    Además, podría valer la pena verificar si los datos binarios en el archivo están escritos en un formato que sea compatible con QDataStream. Si no es así, se requerirá un enfoque alternativo para leer los datos binarios.

    En resumen, el problema de leer valores flotantes incorrectos del archivo podría deberse a suposiciones incorrectas sobre el endianness o el formato de los datos binarios. Se necesita una investigación adicional para identificar la causa exacta del problema.

Comments are closed.