Static cast equivalent in python

My problem is the following:

I am using ROS and I am currently trying to read values from a PointCloud of a Kinect sensor. The values are of type PointCloud2 and PointCloud2.data holds the data of the PointCloud and is of type uint8[].

In my project I am currently using python and I have successfully registered and retrieved the data. My issue is that when trying to retrieve them python parses the uint8[] array as strings.

The current part of the script where I have the problem is the follwowing:

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

I know that in c++ I can do something like

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

To get the value of the unsigned integer. Is there a static cast equivalent to python?

In my case print x outputs ASCII characters. How could I retrieve the int value of that?

Cheers,

Panos

Answers


Use struct.unpack to get the integer value encoded by the binary data in x.

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

(I'm assuming x contains a 4-byte integer in network byte order; consult the documentation for the struct module if you need a format other than !I.)


Update: I missed that you have an array of unsigned bytes; in that case, use

struct.unpack("B", x)

Python doesn't support casting in any form; it's evil.

One version to achieve what you want is convert the data to hex:

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

or you can use the struct module to convert binary data into Python structures. If you want to process the data, you should look at Numpy which has an array type that you can create from a lot of different source.

For image processing, look at OpenCV. And for existing Python tools to work with Kinect, see Python- How to configure and use Kinect


Need Your Help

Magento catalog price rule condition 'contains' not working

magento conditional-statements catalog magento-rules

I am using Magento and am trying to create a promotion using catalog price rules. I want to use the SKU as a condition. If I do the following:

Axis2 WebService and multiple ExceptionFault elements in WSDL

java exception wsdl axis2

I am not AXIS2 expert, therefore I am using Eclipse to generate bottom - up webservice. I am publishing 2 methods as webservices. These methods are defined to throw java.lang.Exception in order to