packages feed

HOpenCV 0.3.0.1 → 0.4.0.0

raw patch · 4 files changed

+43/−57 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- AI.CV.OpenCV.CxCore: c_releaseImage :: Ptr Priv_IplImage -> IO ()
- AI.CV.OpenCV.CxCore: c_releaseMemStorage :: Ptr Priv_CvMemStorage -> IO ()
- AI.CV.OpenCV.CxCore: releaseImage :: IplImage -> IO ()
- AI.CV.OpenCV.CxCore: releaseMemStorage :: MemStorage -> IO ()
- AI.CV.OpenCV.HighGui: c_releaseCapture :: Ptr Priv_CvCapture -> IO ()
- AI.CV.OpenCV.HighGui: releaseCapture :: Capture -> IO ()

Files

HOpenCV.cabal view
@@ -1,5 +1,5 @@ name: HOpenCV-version: 0.3.0.1+version: 0.4.0.0 license: GPL-2 maintainer: Noam Lewis <jones.noamle@gmail.com> bug-reports: mailto:jones.noamle@gmail.com
demo/cannyVideo.hs view
@@ -6,15 +6,20 @@  showFrames :: String -> IplImage -> Capture -> IO () showFrames win target cap  = do-  frame <- queryFrame cap-  convertImage frame target 0-  canny target target 30 190 3-  showImage win target-  k <- waitKey 5-  when (isNothing k) $ showFrames win target cap+  let step 0 = return ()+      step n = do+        frame <- queryFrame cap+        convertImage frame target 0+        canny target target 30 190 3+        showImage win target+        k <- waitKey 5+        putStr $ "\r" ++ show n ++ "\t\t frames before exiting...\r"+        when (isNothing k) $ step (n - 1)+  step 100  main :: IO () main = do+  putStrLn "Running..."   let win = "win"   namedWindow win autoSize   cap    <- createCameraCapture 0
src/AI/CV/OpenCV/CxCore.hsc view
@@ -54,7 +54,7 @@  data CvRect  = CvRect { rectX :: CInt, rectY :: CInt, rectWidth :: CInt, rectHeight :: CInt }                deriving (Show, Eq)-                        + instance Storable CvRect where     sizeOf    _ = (#size CvRect)     alignment _ = alignment (undefined :: CInt)@@ -69,8 +69,8 @@         (#poke CvRect, y) ptr y         (#poke CvRect, width) ptr w         (#poke CvRect, height) ptr h-         + liftCvRect :: (RealFrac c, Num b) => (b -> c) -> CvRect -> CvRect liftCvRect f (CvRect x y w h) = CvRect (f' x) (f' y) (f' w) (f' h)     where f' = toFromIntegral f@@ -87,7 +87,7 @@ instance VectorSpace CvRect where   type Scalar CvRect = Double -- todo: use CInt instead of Double here?   a *^ r = liftCvRect (a*) r-  + ------------------------------------------------------ {- data Priv_CvArr@@ -103,10 +103,10 @@ data Priv_CvSeq a type CvSeq a = ForeignPtr (Priv_CvSeq a) -newtype Depth = Depth { unDepth :: CInt } +newtype Depth = Depth { unDepth :: CInt }     deriving (Eq, Show)-             -#{enum Depth, Depth             ++#{enum Depth, Depth   , iplDepth1u = IPL_DEPTH_1U   , iplDepth8u = IPL_DEPTH_8U   , iplDepth8s = IPL_DEPTH_8S@@ -115,7 +115,7 @@   , iplDepth32s = IPL_DEPTH_32S   , iplDepth32f = IPL_DEPTH_32F   , iplDepth64f = IPL_DEPTH_64F-}               +}  validDepths :: [Depth] validDepths = [iplDepth1u, iplDepth8u, iplDepth8s, iplDepth16u, iplDepth16s, iplDepth32s, iplDepth32f, iplDepth64f]@@ -125,7 +125,7 @@  numToDepth :: CInt -> Maybe Depth numToDepth x = lookup x depthsLookupList-  + --------------------------------------------------------------- -- mem storage @@ -135,15 +135,9 @@ foreign import ccall unsafe "HOpenCV_wrap.h &release_mem_storage"   cf_releaseMemStorage :: FunPtr (Ptr Priv_CvMemStorage -> IO ()) -foreign import ccall unsafe "HOpenCV_wrap.h release_mem_storage"  -  c_releaseMemStorage :: Ptr Priv_CvMemStorage -> IO ()-                         -releaseMemStorage :: MemStorage -> IO ()-releaseMemStorage memstorage = withForeignPtr memstorage c_releaseMemStorage- createMemStorage :: Int -> IO MemStorage-createMemStorage i -  = do p <- errorName "Failed to create mem storage" +createMemStorage i+  = do p <- errorName "Failed to create mem storage"             . checkPtr . c_cvCreateMemStorage $ fromIntegral i        newForeignPtr cf_releaseMemStorage p @@ -158,19 +152,13 @@  createImage :: CvSize -> Depth -> Int -> IO IplImage createImage size depth numChans-  = do im <- errorName "Failed to create image" . checkPtr +  = do im <- errorName "Failed to create image" . checkPtr              $ c_cvCreateImage (sizeWidth size) (sizeHeight size)                                (unDepth depth)                                (fromIntegral numChans)        fp <- newForeignPtr cvFree im        return fp -foreign import ccall unsafe "HOpenCV_wrap.h release_image"-  c_releaseImage :: Ptr Priv_IplImage -> IO ()--releaseImage :: IplImage -> IO ()-releaseImage image = withForeignPtr image c_releaseImage- -- foreign import ccall unsafe "HOpenCV_wrap.h &release_image"   -- cp_release_image :: FunPtr (Ptr Priv_IplImage -> IO ()) @@ -180,17 +168,17 @@  cloneImage :: IplImage -> IO IplImage cloneImage p-  = do p' <- errorName "Failed to clone image" . checkPtr +  = do p' <- errorName "Failed to clone image" . checkPtr              $ withForeignPtr p c_cvCloneImage        fp <- newForeignPtr cvFree p'-       return fp -                  +       return fp+ foreign import ccall unsafe "HOpenCV_wrap.h get_size"   c_get_size :: Ptr Priv_IplImage -> Ptr CvSize -> IO ()  foreign import ccall unsafe "cxcore.h cvCopy"   c_cvCopy :: Ptr Priv_IplImage -> Ptr Priv_IplImage -> Ptr Priv_IplImage -> IO ()-                   + -- todo add mask support copy :: IplImage -> IplImage -> IO () copy src dst@@ -225,7 +213,7 @@  getDepth :: IplImage -> IO Depth getDepth img = do-  depthInt <- withForeignPtr img c_get_depth +  depthInt <- withForeignPtr img c_get_depth   case numToDepth depthInt of     Nothing -> fail "Bad depth in image struct"     Just depth -> return depth@@ -272,16 +260,16 @@                       $ c_cvLoad filenameC mem' nameC ptrRealNameC            ptrObj <- withForeignPtr mem g            realNameC <- peek ptrRealNameC-           realName <- if realNameC == nullPtr -                         then return Nothing +           realName <- if realNameC == nullPtr+                         then return Nothing                          else fmap Just $ peekCString realNameC            -- cvFree realNameC            fp <- newForeignPtr cvFree ptrObj            return (fp, realName)-              + foreign import ccall unsafe "cxcore.h cvGetSeqElem"   cvGetSeqElem :: Ptr (Priv_CvSeq a) -> CInt -> IO (Ptr a)-  + -- foreign import ccall unsafe "HOpenCV_wrap.h c_rect_cvGetSeqElem" --   cvGetSeqElemRect :: Ptr (CvSeq (Ptr CvRect)) -> CInt -> IO (Ptr CvRect) @@ -308,7 +296,7 @@  -- seqToRectList :: Ptr (CvSeq (Ptr CvRect)) -> IO [CvRect] -- seqToRectList pseq = do---   numElems <- withForeignPtr pseq seqNumElems +--   numElems <- withForeignPtr pseq seqNumElems --   flip mapM [1..(numElems)] $ \i -> do --     rectP <- cvGetSeqElemRect pseq i --     rect <- peek rectP
src/AI/CV/OpenCV/HighGui.hsc view
@@ -1,7 +1,7 @@ {-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-}- + module AI.CV.OpenCV.HighGui where- + import Control.Monad import Foreign.ForeignPtrWrap import Foreign.C.Types@@ -10,7 +10,7 @@ import Foreign.C.String import Foreign.Marshal import Foreign.Storable- + import AI.CV.OpenCV.CxCore import AI.CV.OpenCV.Util @@ -35,7 +35,7 @@  foreign import ccall unsafe "highgui.h cvCreateCameraCapture"   c_cvCreateCameraCapture :: CInt -> IO (Ptr Priv_CvCapture)-                          + -- | self-documenting camera specification pickAnyCam :: Int pickAnyCam = -1@@ -48,27 +48,20 @@ createCameraCapture x   = do p <- errorName "Failed to create camera" . checkPtr $ c_cvCreateCameraCapture . fromIntegral $ x        newForeignPtr cp_release_capture p-  + foreign import ccall unsafe "highgui.h cvCreateFileCapture"   c_cvCreateFileCapture :: CString -> IO (Ptr Priv_CvCapture)-                          + createFileCapture :: String -> IO Capture createFileCapture filename   = do c <- err' . checkPtr $ withCString filename f        newForeignPtr cp_release_capture c     where err' = errorName $ "Failed to capture from file: '" ++ filename ++ "'"           f filenameC = c_cvCreateFileCapture filenameC-   -foreign import ccall unsafe "HOpenCV_wrap.h release_capture"-  c_releaseCapture  :: Ptr Priv_CvCapture -> IO ()-                       -releaseCapture :: Capture -> IO ()                       -releaseCapture cap = withForeignPtr cap c_releaseCapture- foreign import ccall unsafe "HOpenCV_wrap.h &release_capture"   cp_release_capture  :: FunPtr (Ptr Priv_CvCapture -> IO ())- + foreign import ccall unsafe "highgui.h cvQueryFrame"   c_cvQueryFrame :: Ptr Priv_CvCapture -> IO (Ptr Priv_IplImage) @@ -103,7 +96,7 @@  destroyWindow :: String -> IO () destroyWindow wId-  = withCString wId cvDestroyWindow +  = withCString wId cvDestroyWindow  foreign import ccall unsafe "highgui.h cvShowImage"   cvShowImage :: CString -> Ptr Priv_IplImage -> IO ()@@ -135,7 +128,7 @@  loadImage :: String -> LoadImageColor -> IO IplImage loadImage filename (LoadImageColor color)-  = do i <- err' . checkPtr $ withCString filename +  = do i <- err' . checkPtr $ withCString filename             $ \fn -> c_cvLoadImage fn color        fp <- newForeignPtr cvFree i        return fp@@ -164,7 +157,7 @@ createTrackbar trackbarName winName startPosition maxValue   = withCString trackbarName $ \tb ->     withCString winName      $ \wn ->-    alloca                   $ \sp -> +    alloca                   $ \sp ->       do maybeToPtr sp startPosition          wrap_createTrackbar tb wn sp (fromIntegral maxValue)  where