나는 pcl 라이브러리 및 kinect xbox와 함께 ros 노드에서 미터에서 픽셀로 변환 거리를 변환하려고합니다. 나는 계량기에있는 ros 노드 내부의 kinect로부터 모든 포인트의 유클리드 좌표에 접근하기 위해 코드 아래를 사용했다. 하지만 저는이 단위를 픽셀 단위로 얻고 싶었습니다. 어떻게해야합니까?픽셀 단위로 변환
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는 [원료] (COL)는 상기 X, Y를 포함하는 점 구조이며, Z는 전 화소 단위로 변환 할 m의 값을 조정한다. 픽셀 단위의 값이 일정하지 않으므로 google에서 찾은 값을 사용하지 마십시오. 여기에 비슷한 질문이 있습니다 : Kinect depth conversion from mm to pixels,하지만 해결책이 없습니다.
물론 x와 y 데이터는 z 데이터에 따라 삼각법을 사용하여 계산해야합니다. 그것은 당신이 요구하는 것이 그것을 해결하는 삼각법입니까? – Sean