Example #1
0
def PIL2zIpl(input):
        """Converts a PIL image to the OpenCV/IPL CvMat data format.

        Supported input image formats are:
            RGB
            L
            F
        """
        if not (isinstance(input, PIL.Image.Image) or isinstance(input, Image.Image)):
            raise TypeError, 'Must be called with PIL.Image.Image or Image.Image!'
        # mode dictionary:
        # (pil_mode : (ipl_depth, ipl_channels)
        mode_list = {
            "RGB" : (zcv.IPL_DEPTH_8U, 3),
            "L"   : (zcv.IPL_DEPTH_8U, 1),
            "F"   : (zcv.IPL_DEPTH_32F, 1)
            }
        if not mode_list.has_key(input.mode):
            raise ValueError, 'unknown or unsupported input mode'
        result = zcv.cvCreateImage(
            zcv.cvSize(input.size[0], input.size[1]),  # size
            mode_list[input.mode][0],  # depth
            mode_list[input.mode][1]  # channels
            )
        # set imageData
        result.imageData = input.tostring()
        return result
Example #2
0
def NumPy2zIplFastWithCopy(input):
        mode_list = {
            numpy.dtype(numpy.uint8) : zcv.IPL_DEPTH_8U,
            numpy.dtype(numpy.uint16) : zcv.IPL_DEPTH_16U,
            numpy.dtype(numpy.int8) : zcv.IPL_DEPTH_8S,
            numpy.dtype(numpy.int16) : zcv.IPL_DEPTH_16S,
            numpy.dtype(numpy.int32) : zcv.IPL_DEPTH_32S,
            numpy.dtype(numpy.float32) : zcv.IPL_DEPTH_32F,
            numpy.dtype(numpy.float64) : zcv.IPL_DEPTH_64F,
            }
        if not mode_list.has_key(input.dtype):
            raise ValueError, 'unknown or unsupported input mode'
        result = zcv.cvCreateImage(zcv.cvSize(input.shape[1], input.shape[0]),  # size
            mode_list[input.dtype],  # depth
            input.shape[2]
            )
        result.imageData = input.tostring()
        return result