
[img]https://i .stack.imgur.com/yPECs.png[/img]
Я писал OpenCV в течение 2 лет и обнаружил, что очень сложно сегментировать камни только с использованием изображения OpenCV RGB, поэтому я использую kinect fusion, чтобы сканировать землю и получить облако точек, в котором камни находятся выше земли.
Я использую библиотеку облаков точек, чтобы сегментировать плоскость земли (зеленого цвета), например это:

Теперь я пытаюсь спроецировать остальные точки на плоскость земли и получить 2D-изображение в формате OpenCV Mat (высота исходной точки становится значением проецируемой точки в 2D-изображение земли), которые оказываются серым матовым изображением. Но для меня это очень сложно, и не могли бы вы дать мне какой-нибудь совет?
Если мне удастся получить свой новый серый коврик, то я смогу сделать на нем сегментацию, что для меня это довольно легко.
кстати, есть ли программа просмотра облаков точек, с помощью которой я могу видеть координаты (x,y,z) точек?
Это мой основной код:
Код: Выделить всё
pcl::PointCloud
::Ptr cloud (new pcl::PointCloud);
pcl::io::loadPLYFile ("MeshedReconstruction.ply", *cloud);
pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers_groud (new pcl::PointIndices);
// Create the segmentation object
pcl::SACSegmentation seg;
// Optional
seg.setOptimizeCoefficients (true);
// Mandatory
seg.setModelType (pcl::SACMODEL_PLANE);
seg.setMethodType (pcl::SAC_RANSAC);
seg.setDistanceThreshold (0.01);//1cm
seg.setInputCloud (cloud);
seg.segment (*inliers_groud, *coefficients);
if (inliers_groud->indices.size () == 0)
{
PCL_ERROR ("Could not estimate a planar model for the given dataset.");
return (-1);
}
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/29827325/how-to-project-point-cloud-onto-the-ground-plane-and-transfer-it-into-an-2d-imag[/url]