CV-0.3: CV/Binary.hs
{-#LANGUAGE ScopedTypeVariables, FlexibleInstances#-}
module CV.Binary where
import CV.Image (Image,GrayScale,D32)
import CV.Conversions
import Data.Maybe (fromJust)
import Data.Binary
import Data.Array.CArray
import Data.Array.IArray
-- NOTE: This binary instance is NOT PORTABLE.
instance Binary (Image GrayScale D32) where
put img = do
let arr :: CArray (Int,Int) Double = copyImageToCArray img
put (bounds arr)
put . unsafeCArrayToByteString $ arr
get = do
bds <- get
get >>= return . copyCArrayToImage . fromJust . unsafeByteStringToCArray bds