packages feed

HOpenCV-0.1: src/Test.hs

module Main where

import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.C.Types

import AI.CV.OpenCV.CxCore
import AI.CV.OpenCV.CV
import AI.CV.OpenCV.HighGui

import Control.Monad(when)

showFrames :: CInt -> Ptr IplImage -> Ptr CvCapture -> IO ()
showFrames winNum targetImage cvcapture  = do
  frame <- cvQueryFrame cvcapture 
  cvConvertImage (fromArr frame) (fromArr targetImage) 0
  calcFrame targetImage
      where calcFrame targetSmall = do
              cvResize targetImage targetSmall CV_INTER_LINEAR
              cvCanny targetSmall targetSmall 30 190 3
              showImage winNum targetSmall
              key <- waitKey 5
              when (key == -1) (showFrames winNum targetImage cvcapture)

  
processImages :: Ptr CvCapture -> IO ()
processImages capture = do
  frame <- cvQueryFrame capture
  let winNum = 0
  newWindow winNum True
  target <- createImageF (cvGetSize frame) 1 iplDepth8u
  withForeignPtr target $ (\target' -> showFrames winNum target' capture) 
    
main :: IO ()
main = do
  capture <- createCameraCaptureF 0
  withForeignPtr capture processImages