indexP :: (Storable (ElemT c e), Show (ElemT c e), CVElement (ElemT c e), Storable (Vector (ElemT c e))) => V2 Int -> Pipe (Mat rs cs c e) (Mat rs cs c e) CV ()
indexP i = forever $ do 
              m <- await
              let v = m ^. neighborhood 1 i
              liftCV $ print (show v)
              yield m
indexP :: (Storable (ElemT c e), Show (ElemT c e), CVElement (ElemT c e), Storable (Vector (ElemT c e))) => V2 Int -> Pipe (Mat rs cs c e) (Mat rs cs c e) CV ()
indexP i = forever $ do 
              m <- await
              let v = m ^. neighborhood 1 i
              liftCV $ print (show v)
              yield m
indexP i = forever $ do 
              m <- await
              let v = m ^. neighborhood 1 i
              liftCV $ print (show v)
              yield m