Ich versuche, konvertieren Entfernung von Meter zu Pixel in Ros-Knoten, mit Pcl-Bibliothek und Kinect-Xbox. Ich benutzte den folgenden Code, um auf euklidische Koordinaten jedes Punktes von kinect innerhalb des ros-Knotens zuzugreifen, der in Meter ist. Aber ich wollte diese Messungen in Pixeleinheit bekommen. Was soll ich machen?Konvertieren von Meter in Pixel-Einheit
void
cloud_cb (const sensor_msgs::PointCloud2ConstPtr& input)
{
pcl::PointCloud<pcl::PointXYZRGB> output;
pcl::fromROSMsg(*input,output);
for(int i=0;i<=400;i++)
{
for(int j=0;j<=400;j++)
{
p[i][j] = output.at(i,j);
ROS_INFO("\n p.z = %f \t p.x = %f \t p.y = %f",p[i][j].z,p[i][j].x,p[i][j].y);
}
}
sensor_msgs::PointCloud2 cloud;
pcl::toROSMsg(output,cloud);
pub.publish (cloud);
}
Hier P [roh] [Spalte] a Point-Struktur ist, die die x, y enthält, z-Koordinaten-Wert in Meter, die ich in Pixeleinheit konvertiert werden soll. Wie ich sehe, ist der Wert der Pixeleinheit nicht konstant, so kann kein Wert in Google verwendet werden. Ich habe ähnliche Frage hier: Kinect depth conversion from mm to pixels, aber es hat keine Lösung.
Nun, die x- und y-Daten müssen mit Trigonometrie abhängig von den z-Daten berechnet werden. Fragen Sie nach den trigonometrischen Methoden, um das Problem zu lösen? – Sean