一位知道如何編寫C++的同事幫助解決了這個問題。他想出了以下幾點:
while (it != shapes.end()) {
if (Plane* plane = dynamic_cast<Plane*>(it->get()))
{
std::cout << "PLANE_" << count++ << "[" << std::endl;
const std::vector<size_t> indices = it->get()->indices_of_assigned_points();
std::vector<size_t>::const_iterator iti = indices.begin();
while (iti != indices.end()) {
// Retrieves point
Point_with_normal pw = *(points.begin() + (*iti));
Kernel::Point_3 p = pw.first;
std::cout << "POINT[" << p.x() << "," << p.y() << "," << p.z() << "]" << std::endl;
// Proceeds with next point.
iti++;
}
std::cout << "]" << std::endl;
}
// Proceeds with next detected shape.
it++;
}
該塊可以取代efficient_RANSAC_parameters.cpp示例中的循環。輸出如下:
PLANE_0[
POINT[34.96,584.49,0.47]
POINT[34.97,585.24,0.54]
POINT[34.88,584.51,0.49]
POINT[34.98,584.75,0.49]
]
這給了我一些工作。就我而言,我使用sed將此輸出轉換爲SQL插入查詢,這些查詢允許我將數據傳輸到關係數據庫以供進一步處理。
OFF用於表示網格,在這裏您要保存平面以在其他軟件中使用它們。該格式是由其他軟件能夠讀取的內容強加的。 – sloriot
我注意到在其他軟件中對OFF有足夠的支持。但任何其他非二進制格式都可以,因爲我可以使用文本處理來派生其他格式。我只想擁有一個我可以使用的文件。任何將直線座標寫入文本文件的方法都適用於我。 –