Ich konvertiere diese Tiefe Bild zu einem pcl :: Pointcloud.pcl :: Pointcloud zu cv :: Mat Tiefe Bild
mit dem folgende:
PointCloud::Ptr PointcloudUtils::RGBDtoPCL(cv::Mat depth_image, Eigen::Matrix3f& _intrinsics)
{
PointCloud::Ptr pointcloud(new PointCloud);
float fx = _intrinsics(0, 0);
float fy = _intrinsics(1, 1);
float cx = _intrinsics(0, 2);
float cy = _intrinsics(1, 2);
float factor = 1;
depth_image.convertTo(depth_image, CV_32F); // convert the image data to float type
if (!depth_image.data) {
std::cerr << "No depth data!!!" << std::endl;
exit(EXIT_FAILURE);
}
pointcloud->width = depth_image.cols; //Dimensions must be initialized to use 2-D indexing
pointcloud->height = depth_image.rows;
pointcloud->resize(pointcloud->width*pointcloud->height);
#pragma omp parallel for
for (int v = 0; v < depth_image.rows; v += 4)
{
for (int u = 0; u < depth_image.cols; u += 4)
{
float Z = depth_image.at<float>(v, u)/factor;
PointT p;
p.z = Z;
p.x = (u - cx) * Z/fx;
p.y = (v - cy) * Z/fy;
p.z = p.z/1000;
p.x = p.x/1000;
p.y = p.y/1000;
pointcloud->points.push_back(p);
}
}
return pointcloud;
}
diesem großen Werk, habe ich einige Verarbeitung auf der Wolke läuft, und jetzt brauche ich die Punktewolke zurück zu einem cv konvertieren :: Mat Tiefenbild . Ich kann dafür kein Beispiel finden und habe Schwierigkeiten, mich darum zu kümmern. Was ist das Gegenteil der obigen Funktion?
Wie kann ich eine pcl :: pointcloud zurück in eine cv :: mat konvertieren?
Vielen Dank.
Haben Sie die 'px möchten, py, pz', um ein float-pixel darzustellen? – zindarod
Hallo, danke für deine Antwort. Ich denke schon. Grundsätzlich möchte ich mit dem obigen Bild enden. Gleiche Anzahl von Spalten/Zeilen. – anti
... Ziel ist es, die obige Funktion umzukehren. Also von Bild zu Punktwolke, dann zurück zu genau demselben Bild. Vielen Dank! – anti