diff --git a/corelib/src/DBDriverSqlite3.cpp b/corelib/src/DBDriverSqlite3.cpp index 838eb646..11d48b42 100644 --- a/corelib/src/DBDriverSqlite3.cpp +++ b/corelib/src/DBDriverSqlite3.cpp @@ -882,13 +882,39 @@ void DBDriverSqlite3::loadNodeDataQuery(std::list & signatures) con if(dataSize > 0 && data) { float * dataFloat = (float*)data; - if((unsigned int)dataSize % (4+localTransform.size())*sizeof(float) == 0) + if(uStrNumCmp(_version, "0.11.2") >= 0 && + (unsigned int)dataSize % (6+localTransform.size())*sizeof(float) == 0) + { + int cameraCount = dataSize / ((6+localTransform.size())*sizeof(float)); + UDEBUG("Loading calibration for %d cameras (%d bytes)", cameraCount, dataSize); + int max = cameraCount*(6+localTransform.size()); + for(int i=0; i & signatures) con dataFloat[4], // baseline localTransform); } - else if((unsigned int)dataSize % (6+localTransform.size())*sizeof(float) == 0) - { - int cameraCount = dataSize / ((6+localTransform.size())*sizeof(float)); - UDEBUG("Loading calibration for %d cameras (%d bytes)", cameraCount, dataSize); - int max = cameraCount*(6+localTransform.size()); - for(int i=0; i 0 && data) { float * dataFloat = (float*)data; - if((unsigned int)dataSize % (4+localTransform.size())*sizeof(float) == 0) + if(uStrNumCmp(_version, "0.11.2") >= 0 && + (unsigned int)dataSize % (6+localTransform.size())*sizeof(float) == 0) + { + int cameraCount = dataSize / ((6+localTransform.size())*sizeof(float)); + UDEBUG("Loading calibration for %d cameras (%d bytes)", cameraCount, dataSize); + int max = cameraCount*(6+localTransform.size()); + for(int i=0; i & ids, std::list< int index=0; const void * data = 0; int dataSize = 0; - Transform localTransform = Transform::getIdentity(); + Transform localTransform; std::vector models; StereoCameraModel stereoModel; @@ -1910,13 +1922,39 @@ void DBDriverSqlite3::loadSignaturesQuery(const std::list & ids, std::list< { ++calibrationsLoaded; float * dataFloat = (float*)data; - if((unsigned int)dataSize % (4+localTransform.size())*sizeof(float) == 0) + if(uStrNumCmp(_version, "0.11.2") >= 0 && + (unsigned int)dataSize % (6+localTransform.size())*sizeof(float) == 0) + { + int cameraCount = dataSize / ((6+localTransform.size())*sizeof(float)); + UDEBUG("Loading calibration for %d cameras (%d bytes)", cameraCount, dataSize); + int max = cameraCount*(6+localTransform.size()); + for(int i=0; i & ids, std::list< dataFloat[4], // baseline localTransform); } - else if((unsigned int)dataSize % (6+localTransform.size())*sizeof(float) == 0) - { - int cameraCount = dataSize / ((6+localTransform.size())*sizeof(float)); - UDEBUG("Loading calibration for %d cameras (%d bytes)", cameraCount, dataSize); - int max = cameraCount*(6+localTransform.size()); - for(int i=0; i= 0) { - const Transform & localTransform = sensorData.cameraModels()[i].localTransform(); - calibration[i*(6+localTransform.size())] = sensorData.cameraModels()[i].fx(); - calibration[i*(6+localTransform.size())+1] = sensorData.cameraModels()[i].fy(); - calibration[i*(6+localTransform.size())+2] = sensorData.cameraModels()[i].cx(); - calibration[i*(6+localTransform.size())+3] = sensorData.cameraModels()[i].cy(); - calibration[i*(6+localTransform.size())+4] = sensorData.cameraModels()[i].imageWidth(); - calibration[i*(6+localTransform.size())+5] = sensorData.cameraModels()[i].imageHeight(); - memcpy(calibration.data()+i*(6+localTransform.size())+6, localTransform.data(), localTransform.size()*sizeof(float)); + calibration.resize(sensorData.cameraModels().size() * (6+Transform().size())); + for(unsigned int i=0; i