私は、pclライブラリとkinect xboxを使って、rosノードのメーターからピクセルへの変換距離を変換しようとしています。私は以下のコードを使用して、キロメートル内にあるkinノード内のすべてのポイントのユークリッド座標にアクセスしました。しかし、私はピクセル単位でこの測定値を取得したかったのです。私は何をすべきか?ここピクセル単位に変換する
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);
}
P [RAW] [COL] Xが含まれているポイント構造であり、Y、Z iは画素単位で変換したい、メーターの値を調整します。ピクセル単位の値が一定でないことがわかるので、グッドで使用されている値は使用できません。 私はここでも同様の質問があります:Kinect depth conversion from mm to pixelsですが、解決策はありません。
まあ、xデータとyデータは、zデータに依存して三角法を使って計算する必要があります。それはあなたの求めることがそれを解決する三角法ですか? – Sean