def __init__(self,size,use_previous=0,blocksize=(8,8),shiftsize=(8,8),maxrange=(8,8),bfc=0): self.use_previous=use_previous self.blocksize=zcv.cvSize(blocksize[0],blocksize[1]) self.shiftsize=zcv.cvSize(shiftsize[0],shiftsize[1]) self.maxrange=zcv.cvSize(maxrange[0],maxrange[1]) self.imgprev=None self.imgvelx=numpy.ndarray(shape=((size[0]-bfc*blocksize[1])//shiftsize[1],(size[1]-bfc*blocksize[0])//shiftsize[0]),dtype=numpy.float32) self.cvimgvelx=zcv.NumPy2CvMatFast(self.imgvelx) self.imgvely=numpy.ndarray(shape=((size[0]-bfc*blocksize[1])//shiftsize[1],(size[1]-bfc*blocksize[0])//shiftsize[0]),dtype=numpy.float32) self.cvimgvely=zcv.NumPy2CvMatFast(self.imgvely)
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 __init__(self,size,use_previous=0,winsize=(7,7)): self.use_previous=use_previous self.winsize=zcv.cvSize(winsize[0],winsize[1]) self.imgprev=None self.imgvelx=numpy.ndarray(shape=(size[0],size[1]),dtype=numpy.float32) self.cvimgvelx=zcv.NumPy2CvMatFast(self.imgvelx) self.imgvely=numpy.ndarray(shape=(size[0],size[1]),dtype=numpy.float32) self.cvimgvely=zcv.NumPy2CvMatFast(self.imgvely)
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
def snake(src,alpha=0.45,beta=0.2,gamma=0.45,max_iter=1000,epsilon=0.001,length=int(50),neigborhoodsize=(10,10)): CV_VALUE=1 if (src.ndim==2): src=src.reshape(src.shape+(1,)) if (src.shape[2]!=1): src=src.mean(axis=2) src=src.astype(numpy.uint8) w2,h2=src.shape[1]/2,src.shape[0]/2 points=(numpy.vstack([scipy.cos(numpy.arange(0,scipy.pi*2,scipy.pi*2./length))*w2+w2,scipy.sin(numpy.arange(0,scipy.pi*2,scipy.pi*2./length))*h2+h2])).T.astype(numpy.int32) alpha=numpy.array([alpha], dtype=numpy.float32) beta=numpy.array([beta], dtype=numpy.float32) gamma=numpy.array([gamma], dtype=numpy.float32) size=zopencv.cvSize(neigborhoodsize[0]|1,neigborhoodsize[1]|1) criteria=zopencv.CvTermCriteria() criteria.type=zopencv.CV_TERMCRIT_ITER+zopencv.CV_TERMCRIT_EPS; criteria.max_iter=max_iter; criteria.epsilon=epsilon; zopencv.cvSnakeImage( src, zopencv.memory_addr_of_numpy_array(points),length,alpha,beta, gamma,CV_VALUE,size,criteria,0 ); return points