Я пытаюсь преобразовать расстояние преобразования от метра к пикселю в розовом узле, с библиотекой pcl и kinect xbox. Я использовал приведенный ниже код для доступа к евклидовым координатам каждой точки из кинцевого узла ros, который находится в метре. Но я хотел получить эти измерения в пиксельной единице. Что мне делать?преобразование счетчика в пиксельный блок
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);
}
Здесь Р [сырые] [Col] представляет собой структуру, которая содержит точки х, у, г координаты значение в метр, который я требуется преобразовать в блоке пикселей. Поскольку я вижу, что значение единицы пикселя не является постоянным, поэтому can not использовать любое значение, найденное в google. У меня есть аналогичный вопрос: Kinect depth conversion from mm to pixels, но у него нет решения.
Ну, данные x и y должны быть рассчитаны с использованием тригонометрии, зависящей от данных z. Это то, что вы просите о тригонометрических методах его решения? – Sean