Мне нужно преобразовать данные слоя в данные мата. Для этого я использовал plyreader pcl и конвертировал в облако точек, и теперь моим следующим шагом является преобразование его в данные мата из облака точек. Я думаю, облако точек, которое я получил от plyreader, неорганизован. Я пытаюсь извлечь значения xyz облака точек и затем скопировать их в данные.данные pointcloud для данных мата
pcl :: PointCloud :: Ptr cloud (новый pcl :: PointCloud); // создать новое облако точек (POINTXYZ)
pcl::PLYReader reader;
reader.read(filename,*cloud); // read the ply file
cv::Mat output;
//...
output = cv::Mat(1,cloud->points.size(),CV_32FC3);
for(size_t i=0; i<cloud->points.size();++i)
{
int m = cloud->points[i].x;
int n = cloud->points[i].y;
int l = cloud->points[i].z;
float x0;
float x1;
float x2;
output.at<cv::Vec3f>(x0,x1,x2)= cv::Vec3f(m,n,l);
}
Я знаю, что это неправильно. Я нашел один пост об этом, но это для организованной облака Ссылка здесь ->
Визит [PointCloud матировать]
Coversion from PointCloud to Mat
Я новичок в этой области. Если кто-нибудь знает или может помочь !!!
Заранее спасибо
Решенный .... Просто нужно добавить нули при определении cvmat, чтобы он мог переписать значения. cv :: Mat output; output = cv :: Mat :: zeros (1, cloud-> points.size(), CV_32FC3); – Akash