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
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