-{-#LANGUAGE ForeignFunctionInterface, ViewPatterns,ParallelListComp, FlexibleInstances, FlexibleContexts, TypeFamilies, EmptyDataDecls, ScopedTypeVariables, StandaloneDeriving, DeriveDataTypeable, UndecidableInstances #-}
+{-#LANGUAGE ForeignFunctionInterface, ViewPatterns,ParallelListComp, FlexibleInstances, FlexibleContexts, TypeFamilies, EmptyDataDecls, ScopedTypeVariables, StandaloneDeriving, DeriveDataTypeable, UndecidableInstances, MultiParamTypeClasses #-}
 #include "cvWrapLEO.h"
 module CV.Image (
 -- * Basic types


-- |Create a montage form given images (u,v) determines the layout and space the spacing
--  between images. Images are assumed to be the same size (determined by the first image)
montage :: (CreateImage (MutableImage GrayScale D32)) => (Int,Int) -> Int -> [Image GrayScale D32] -> Image GrayScale D32
montage (u',v') space' imgs
    | u'*v' < (length imgs) = error ("Montage mismatch: "++show (u,v, length imgs))
    | otherwise              = resultPic

                                 creatingImage ({#call simpleMergeImages#}
                                                i1 i2 x y)
-- | Blit image2 onto image1.
class Blittable channels depth 
instance Blittable GrayScale D32
instance Blittable RGB D32

blit :: Blittable c d => MutableImage c d -> Image c d -> (Int,Int) -> IO ()
blit image1 image2 (x,y) = do
    (w1,h1) <- getSize image1
    let ((w2,h2)) = getSize image2
