2015-05-07 1 views
0

Моя проблемы заключается в следующем:Статическая литая эквивалент в питоне

Я использую ROS и я в настоящее время пытаюсь прочитать значения из PointCloud датчика Kinect. Значения типа PointCloud2 и PointCloud2.data содержат данные PointCloud и имеют тип uint8 [].

В моем проекте я в настоящее время использую python, и я успешно зарегистрировал и извлек данные. Моя проблема заключается в том, что при попытке получить их python анализирует массив uint8 [] как строки.

Текущая часть сценария, где у меня есть проблема является follwowing:

def PointCloud(self, PointCloud2): 
    self.lock.acquire() 
     for x in PointCloud2.data: 
      print x 
    self.lock.release() 

Я знаю, что в C++ я могу сделать что-то вроде

std::cout << static_cast<int>(u); 

Чтобы получить значение без знака целое число. Есть ли статический эквивалент, эквивалентный python?

В моем случае print x выдает символы ASCII. Как я могу получить значение int этого?

Приветствия,

Panos

ответ

3

использования struct.unpack, чтобы получить целое значение, кодируемый двоичных данных в x.

print struct.unpack("!I", x) 

(я предполагаю, что x содержит 4 байта целое число в сетевом порядке байтов, обратитесь к документации для struct модуля, если вам нужен другой формат, чем !I.)


Update: Я пропустил, что у вас есть массив беззнаковых байтов; в этом случае используйте

struct.unpack("B", x) 
+0

Поскольку он использует 'unit8 []', ему понадобится документация. – Prusse

+0

Спасибо за ответы, обновление сделало трюк! –

1

Python не поддерживает литье в какой-либо форме; это зло.

Одна из версий добиться того, что вы хотите преобразовать данные в шестнадцатеричном:

print ['%02x' % e for e in PointCloud2.data] 

или вы можете использовать struct module для преобразования двоичных данных в структуры Python. Если вы хотите обработать данные, вы должны посмотреть на Numpy, который имеет тип array, который вы можете create from a lot of different source.

Для обработки изображений просмотрите OpenCV. И для существующих инструментов Python для работы с Kinect см. Python- How to configure and use Kinect