packages feed

HOpenCV 0.1.2.2 → 0.1.2.3

raw patch · 5 files changed

+128/−88 lines, 5 files

Files

HOpenCV.cabal view
@@ -1,11 +1,11 @@ name: HOpenCV-version: 0.1.2.2+version: 0.1.2.3 license: BSD3 maintainer: Noam Lewis <jones.noamle@gmail.com> bug-reports: mailto:jones.noamle@gmail.com category: AI, Graphics synopsis: A binding for the OpenCV computer vision library-Tested-With:   GHC == 6.10.4+Tested-With:   GHC == 6.10.4, GHC == 7.0.4 description:    Initial version with very limited bindings to OpenCV 2.0. (See: <http://opencv.willowgarage.com/wiki/Welcome>)    .@@ -17,11 +17,9 @@    .    You must install OpenCV (development packages) prior to installing this package. Currently only tested on Ubuntu Linux, but should work on most linux distributions. For OpenCV installation on other *nix platforms, see <http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.0/>    .-   On /Ubuntu/ systems, the appropriate version of OpenCV can be installed by (the instructions are for Karmic):+   On /Ubuntu/ systems, the appropriate version of OpenCV can be installed by:    .-   > sudo add-apt-repository ppa:gijzelaar/opencv2-karmic-   > sudo apt-get update-   > sudo apt-get install libcv-dev libhighgui-dev+   > sudo apt-get install libcv-dev libhighgui-dev libcvaux-dev    .    You should then have libcv4 and libhighgui4 installed automatically too.    .@@ -41,8 +39,8 @@       src/AI/CV/OpenCV/HOpenCV_wrap.c    hs-Source-Dirs: src    include-dirs: /usr/include/opencv-   extra-libraries: cv,highgui-   build-depends: base >=4 && <5, allocated-processor >= 0.0.1, vector-space+   pkgconfig-depends: opencv+   build-depends: base >= 4 && < 5, allocated-processor >= 0.0.1, vector-space    ghc-options: -Wall -fno-warn-type-defaults  executable test-hopencv@@ -50,11 +48,11 @@      src/AI/CV/OpenCV/HOpenCV_wrap.c   include-dirs: /usr/include/opencv   hs-source-dirs:  src-  Build-Depends: base >=4 && <5+  Build-Depends: base >= 4 && < 5   main-is: Test.hs   Ghc-Options: -Wall -fno-warn-type-defaults   Ghc-Prof-Options:  -prof -auto-all -  extra-libraries: cv,highgui+  pkgconfig-depends: opencv   other-modules: AI.CV.OpenCV.CxCore, AI.CV.OpenCV.CV, AI.CV.OpenCV.HighGui, AI.CV.OpenCV.Types  
src/AI/CV/OpenCV/CxCore.hsc view
@@ -5,9 +5,11 @@ import Foreign.ForeignPtrWrap import Foreign.C.Types import Foreign.C.String-import Foreign+import Foreign hiding (unsafePerformIO)  import Data.VectorSpace as VectorSpace++import System.IO.Unsafe (unsafePerformIO)  #include <cxcore.h> 
− src/AI/CV/OpenCV/HighGui.hs
@@ -1,74 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-}- -module AI.CV.OpenCV.HighGui where- -import Foreign.ForeignPtrWrap-import Foreign.C.Types-import Foreign.Ptr-import Foreign.ForeignPtr-import Foreign.C.String- -import AI.CV.OpenCV.CxCore------------------------------------------------------ General-foreign import ccall unsafe "highgui.h cvConvertImage"-  c_cvConvertImage :: Ptr CvArr -> Ptr CvArr -> CInt -> IO ()--cvConvertImage :: (IplArrayType a, IplArrayType a1) => Ptr a -> Ptr a1 -> CInt -> IO ()-cvConvertImage src dst flags = c_cvConvertImage (fromArr src) (fromArr dst) flags----------------------------------------------------- Capturing-data CvCapture---foreign import ccall unsafe "highgui.h cvCreateCameraCapture"-  c_cvCreateCameraCapture :: CInt -> IO (Ptr CvCapture)-                          -cvCreateCameraCapture :: CInt -> IO (Ptr CvCapture)-cvCreateCameraCapture x = errorName "Failed to create camera" . checkPtr $ c_cvCreateCameraCapture . fromIntegral $ x-  -foreign import ccall unsafe "highgui.h cvCreateFileCapture"-  c_cvCreateFileCapture :: CString -> IO (Ptr CvCapture)-                          -cvCreateFileCapture :: String -> IO (Ptr CvCapture)-cvCreateFileCapture filename = err' . checkPtr $ withCString filename f-    where err' = errorName $ "Failed to capture from file: '" ++ filename ++ "'"-          f filenameC = c_cvCreateFileCapture filenameC-  --foreign import ccall unsafe "HOpenCV_warp.h release_capture"-  cvReleaseCapture  :: Ptr CvCapture -> IO ()--foreign import ccall unsafe "HOpenCV_warp.h &release_capture"-  cp_release_capture  :: FunPtr (Ptr CvCapture -> IO () )- -createCameraCaptureF :: CInt -> IO (ForeignPtr CvCapture)-createCameraCaptureF = (createForeignPtr cp_release_capture) . cvCreateCameraCapture----foreign import ccall unsafe "highgui.h cvQueryFrame"-  c_cvQueryFrame :: Ptr CvCapture -> IO (Ptr IplImage)--cvQueryFrame :: Ptr CvCapture -> IO (Ptr IplImage)-cvQueryFrame cap = errorName "Failed to query frame from camera" . checkPtr $ c_cvQueryFrame cap------------------------------------------------------ Windows-foreign import ccall unsafe "HOpenCV_wrap.h new_window"-  c_newWindow :: CInt -> CInt -> IO ()--newWindow :: CInt -> Bool -> IO ()-newWindow num autoSize = c_newWindow num (if autoSize then 1 else 0)--foreign import ccall unsafe "HOpenCV_wrap.h del_window"-  delWindow :: CInt -> IO ()--foreign import ccall unsafe "HOpenCV_wrap.h show_image"-  showImage :: CInt -> Ptr IplImage -> IO ()--foreign import ccall unsafe "highgui.h cvWaitKey"-  waitKey :: CInt -> IO CInt
+ src/AI/CV/OpenCV/HighGui.hsc view
@@ -0,0 +1,117 @@+{-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-}+ +module AI.CV.OpenCV.HighGui where+ +import Control.Monad+import Foreign.ForeignPtrWrap+import Foreign.C.Types+import Foreign.Ptr+import Foreign.ForeignPtr+import Foreign.C.String+ +import AI.CV.OpenCV.CxCore++#include <highgui.h>++------------------------------------------------+-- General+foreign import ccall unsafe "highgui.h cvConvertImage"+  c_cvConvertImage :: Ptr CvArr -> Ptr CvArr -> CInt -> IO ()++cvConvertImage :: (IplArrayType a, IplArrayType a1) => Ptr a -> Ptr a1 -> CInt -> IO ()+cvConvertImage src dst flags = c_cvConvertImage (fromArr src) (fromArr dst) flags++------------------------------------------------+-- Capturing+data CvCapture+++foreign import ccall unsafe "highgui.h cvCreateCameraCapture"+  c_cvCreateCameraCapture :: CInt -> IO (Ptr CvCapture)+                          +cvCreateCameraCapture :: CInt -> IO (Ptr CvCapture)+cvCreateCameraCapture x = errorName "Failed to create camera" . checkPtr $ c_cvCreateCameraCapture . fromIntegral $ x+  +foreign import ccall unsafe "highgui.h cvCreateFileCapture"+  c_cvCreateFileCapture :: CString -> IO (Ptr CvCapture)+                          +cvCreateFileCapture :: String -> IO (Ptr CvCapture)+cvCreateFileCapture filename = err' . checkPtr $ withCString filename f+    where err' = errorName $ "Failed to capture from file: '" ++ filename ++ "'"+          f filenameC = c_cvCreateFileCapture filenameC+  ++foreign import ccall unsafe "HOpenCV_warp.h release_capture"+  cvReleaseCapture  :: Ptr CvCapture -> IO ()++foreign import ccall unsafe "HOpenCV_warp.h &release_capture"+  cp_release_capture  :: FunPtr (Ptr CvCapture -> IO () )+ +createCameraCaptureF :: CInt -> IO (ForeignPtr CvCapture)+createCameraCaptureF = (createForeignPtr cp_release_capture) . cvCreateCameraCapture++++foreign import ccall unsafe "highgui.h cvQueryFrame"+  c_cvQueryFrame :: Ptr CvCapture -> IO (Ptr IplImage)++cvQueryFrame :: Ptr CvCapture -> IO (Ptr IplImage)+cvQueryFrame cap = errorName "Failed to query frame from camera" . checkPtr $ c_cvQueryFrame cap++-------------------------------------------------+-- Windows+foreign import ccall unsafe "HOpenCV_wrap.h new_window"+  c_newWindow :: CInt -> CInt -> IO ()++newWindow :: CInt -> Bool -> IO ()+newWindow num autoSize = c_newWindow num (if autoSize then 1 else 0)++foreign import ccall unsafe "HOpenCV_wrap.h del_window"+  delWindow :: CInt -> IO ()++foreign import ccall unsafe "HOpenCV_wrap.h show_image"+  showImage :: CInt -> Ptr IplImage -> IO ()++foreign import ccall unsafe "highgui.h cvWaitKey"+  waitKey :: CInt -> IO CInt++foreign import ccall unsafe "highgui.h cvNamedWindow"+  cvNamedWindow :: CString -> CInt -> IO CInt++type AutoSize = Bool++titledWindow :: String -> AutoSize -> IO Int+titledWindow s a+  = do cs <- newCString s+       i <- cvNamedWindow cs (fromToInteger $ fromEnum a)+       return $ fromToInteger i++fromToInteger :: (Integral a, Num b) => a -> b+fromToInteger = fromInteger . toInteger++newtype LoadImageColor = LoadImageColor { unLoadImageColor :: CInt }++#{enum LoadImageColor, LoadImageColor+    , loadImageColor     = CV_LOAD_IMAGE_COLOR+    , loadImageGrayscale = CV_LOAD_IMAGE_GRAYSCALE+    , loadImageUnchanged = CV_LOAD_IMAGE_UNCHANGED }++foreign import ccall unsafe "highgui.h cvLoadImage"+  c_cvLoadImage :: CString -> CInt -> IO (Ptr IplImage)++cvLoadImage :: String -> LoadImageColor -> IO (Ptr IplImage)+cvLoadImage filename (LoadImageColor color) = err' . checkPtr $ withCString filename f+  where+    err' = errorName $ "Failed to load from file: '" ++ filename ++ "'"+    f filenameC = c_cvLoadImage filenameC color++foreign import ccall unsafe "highgui.h cvSaveImage"+  c_cvSaveImage :: CString -> Ptr CvArr -> IO CInt++cvSaveImage :: String -> Ptr IplImage -> IO CInt+cvSaveImage filename image = withCString filename f+  where+    f filenameC = do+      ret <- c_cvSaveImage filenameC (fromArr image)+      when (ret == 0) $ fail $ "Failed to save to file: '" ++ filename ++ "'"+      return ret
src/AI/CV/OpenCV/Types.hs view
@@ -5,9 +5,6 @@ import AI.CV.OpenCV.HighGui  import Foreign-import Foreign.ForeignPtr--  type PImage = Ptr IplImage type PCapture = Ptr CvCapture