module AI.CV.OpenCV.CV where
import Foreign.C.Types
import Foreign.Ptr
import Data.Bits
import AI.CV.OpenCV.CxCore
foreign import ccall unsafe "cv.h cvCanny"
c_cvCanny :: Ptr CvArr -> Ptr CvArr -> CDouble -> CDouble -> CInt -> IO ()
cvCanny :: (IplArrayType i1, IplArrayType i2) =>
Ptr i1 -> Ptr i2 -> CDouble -> CDouble -> CInt -> IO ()
cvCanny src dst threshold1 threshold2 apertureSize =
c_cvCanny (fromArr src) (fromArr dst) (realToFrac threshold1) (realToFrac threshold2) apertureSize
data InterpolationMethod = CV_INTER_NN
| CV_INTER_LINEAR
| CV_INTER_CUBIC
| CV_INTER_AREA
deriving (Enum,Eq)
foreign import ccall unsafe "cv.h cvResize"
c_cvResize :: Ptr CvArr -> Ptr CvArr -> CInt -> IO ()
cvResize :: (IplArrayType i1, IplArrayType i2) => Ptr i1 -> Ptr i2 -> InterpolationMethod -> IO ()
cvResize src dst interp = c_cvResize (fromArr src) (fromArr dst) (fromIntegral . fromEnum $ interp)
foreign import ccall unsafe "HOpenCV_warp.h dilate"
c_dilate :: Ptr CvArr -> Ptr CvArr -> CInt -> IO ()
cvDilate :: (IplArrayType i1, IplArrayType i2) => Ptr i1 -> Ptr i2 -> CInt -> IO ()
cvDilate src dst iter = c_dilate (fromArr src) (fromArr dst) iter
foreign import ccall unsafe "cv.h cvPyrDown"
c_cvPyrDown :: Ptr CvArr -> Ptr CvArr -> CInt -> IO ()
constCvGaussian5x5 :: CInt
constCvGaussian5x5 = 7
cvPyrDown :: (IplArrayType i1, IplArrayType i2) => Ptr i1 -> Ptr i2 -> IO ()
cvPyrDown src dst = c_cvPyrDown (fromArr src) (fromArr dst) constCvGaussian5x5
data CvHaarClassifierCascade
newtype HaarDetectFlag = HaarDetectFlag { unHaarDetectFlag :: CInt }
deriving (Eq, Show)
cvHaarFlagNone :: HaarDetectFlag
cvHaarFlagNone = HaarDetectFlag 0
cvHaarDoCannyPruning :: HaarDetectFlag
cvHaarDoCannyPruning = HaarDetectFlag 1
cvHaarScaleImage :: HaarDetectFlag
cvHaarScaleImage = HaarDetectFlag 2
cvHaarFindBiggestObject :: HaarDetectFlag
cvHaarFindBiggestObject = HaarDetectFlag 4
cvHaarDoRoughSearch :: HaarDetectFlag
cvHaarDoRoughSearch = HaarDetectFlag 8
combineHaarFlags :: [HaarDetectFlag] -> HaarDetectFlag
combineHaarFlags = HaarDetectFlag . foldr ((.|.) . unHaarDetectFlag) 0
foreign import ccall unsafe "HOpenCV_warp.h c_cvHaarDetectObjects"
c_cvHaarDetectObjects :: Ptr CvArr
-> Ptr CvHaarClassifierCascade
-> Ptr CvMemStorage
-> CDouble
-> CInt
-> CInt
-> CInt -> CInt
-> IO (Ptr (CvSeq CvRect))
cvHaarDetectObjects :: (IplArrayType i) =>
Ptr i
-> Ptr CvHaarClassifierCascade
-> Ptr CvMemStorage
-> CDouble
-> CInt
-> HaarDetectFlag
-> CvSize
-> IO (Ptr (CvSeq CvRect))
cvHaarDetectObjects image cascade storage scaleFactor minNeighbors flags minSize =
c_cvHaarDetectObjects (fromArr image) cascade storage scaleFactor minNeighbors (unHaarDetectFlag flags) (sizeWidth minSize) (sizeHeight minSize)