Вы можете легко сэкономить 3d координаты на PLY format. Вот простой пример использования ofxKinect:
void exportPlyCloud(string filename, ofMesh& cloud) {
ofFile ply;
if (ply.open(filename, ofFile::WriteOnly)) {
// write the header
ply << "ply" << endl;
ply << "format binary_little_endian 1.0" << endl;
ply << "element vertex " << cloud.getVertices().size() << endl;
ply << "property float x" << endl;
ply << "property float y" << endl;
ply << "property float z" << endl;
ply << "end_header" << endl;
// write all the vertices
vector<ofVec3f>& surface = cloud.getVertices();
for(int i = 0; i < surface.size(); i++) {
if (surface[i].z != 0) {
// write the raw data as if it were a stream of bytes
ply.write((char*) &surface[i], sizeof(ofVec3f));
}
}
}
}
Вы можете использовать MeshLab для обработки/Стич Ply файлов, а затем экспортировать их в другой формат, как OBJ. Что касается openFrameworks, вы можете найти несколько удобных примеров, включая вышеупомянутый экспорт PLY в этом workshop.
Сохранение в PLY решит часть проблемы, и вам нужно будет вручную использовать stich, что может занять много времени. Вам понадобится нечто вроде SLAM (одновременная локализация и сопоставление) или другие алгоритмы восстановления, которые помогут сшить все вместе. Вы можете найти хорошую коллекцию алгоритмов на OpenSLAM.
Теперь в зависимости от вашего уровня комфорта с кодировкой есть несколько вариантов, которые помогут вам в этом. Я также рекомендую взглянуть на построенное программное обеспечение RGBDemo с функцией восстановления. Это не требует кодирования, если вы не хотите (поскольку это open source).
С немного кодированием вы также можете выполнить реконструкцию, используя PointCloudsLibrary (PCL). Если также включает в себя implementation of KinectFusion
Если вы используете Microsoft Kinect SDK, Kinect Fusion был интегрирован в Kinect SDK 1.7
Вы также можете найти этот пост интересным: Kinect Fusion inside AutoCAD ,
Человек, это здорово! На самом деле, спасибо за это решение, я некоторое время искал что-то подобное. :) – VVZen