diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,21 @@
+## [0.0.1.0] - 2017-06-20
+
+### Added
+
+- OpenCV.Calib3d: findHomography.
+- OpenCV.Core.ArrayOps: hconcat, vconcat.
+- include/hsc_macros.hpp: #alignof macro.
+
+### Changed
+
+- Fix build on OS X.
+- Add source repo to cabal file.
+- Reference opencv-extra and the examples from the Cabal package description.
+
+
+## 0.0.0.0 - 2017-06-11
+
+- Initial version
+
+
+[0.0.1.0]: https://github.com/LumiGuide/haskell-opencv/compare/opencv-0.0.0.0...opencv-0.0.1.0
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright 2015—2016 Lumi Guide Fietsdetectie B.V.
+Copyright 2015–2017 Lumi Guide Fietsdetectie B.V.
 
 All rights reserved.
 
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -3,6 +3,6 @@
 
 main = do
     args <- getArgs
-    let args' | "configure" `elem` args = args ++ ["--with-gcc","g++", "--with-ld","g++"]
+    let args' | "configure" `elem` args = args ++ ["--with-gcc","c++", "--with-ld","c++"]
               | otherwise               = args
     defaultMainArgs args'
diff --git a/data/haskell-opencv-logo-200x82.png b/data/haskell-opencv-logo-200x82.png
new file mode 100644
Binary files /dev/null and b/data/haskell-opencv-logo-200x82.png differ
diff --git a/doc/generated/examples/car.gif b/doc/generated/examples/car.gif
new file mode 100644
# file too large to diff: doc/generated/examples/car.gif
diff --git a/doc/generated/examples/drawChArUcoBoardImg.png b/doc/generated/examples/drawChArUcoBoardImg.png
new file mode 100644
Binary files /dev/null and b/doc/generated/examples/drawChArUcoBoardImg.png differ
diff --git a/doc/generated/examples/hconcatImg.png b/doc/generated/examples/hconcatImg.png
new file mode 100644
Binary files /dev/null and b/doc/generated/examples/hconcatImg.png differ
diff --git a/doc/generated/examples/mog2.gif b/doc/generated/examples/mog2.gif
new file mode 100644
Binary files /dev/null and b/doc/generated/examples/mog2.gif differ
diff --git a/doc/generated/examples/vconcatImg.png b/doc/generated/examples/vconcatImg.png
new file mode 100644
Binary files /dev/null and b/doc/generated/examples/vconcatImg.png differ
diff --git a/include/hsc_macros.hpp b/include/hsc_macros.hpp
--- a/include/hsc_macros.hpp
+++ b/include/hsc_macros.hpp
@@ -10,6 +10,8 @@
 
 #define bc_sizeof_varid(name) {printf("c'sizeof_");bc_word(name);}; \
 
+#define bc_alignof_varid(name) {printf("c'alignof_");bc_word(name);}; \
+
 /*
 The #sizeof macro outputs a Haskell constant with the size of the C/C++ type in bytes.
 
@@ -25,6 +27,25 @@
 #define hsc_sizeof(name) \
   { bc_sizeof_varid(# name);printf(" :: Int\n"); \
     bc_sizeof_varid(# name);printf(" = %lu\n", sizeof(name)); \
+  }; \
+
+/*
+The #alignof macro outputs a Haskell constant with the alignment off the C/C++ type in bytes.
+
+For example the following:
+
+  #alignof Point2i
+
+Results in the following Haskell code:
+
+  c'alignof_Point2i :: Int
+  c'alignof_Point2i = 4
+
+The specific alignment that is calculated is platform dependent.
+*/
+#define hsc_alignof(name) \
+  { bc_alignof_varid(# name);printf(" :: Int\n"); \
+    bc_alignof_varid(# name);printf(" = %lu\n", alignof(name)); \
   }; \
 
 #endif /* __HSC_MACROS_H__ */
diff --git a/opencv.cabal b/opencv.cabal
--- a/opencv.cabal
+++ b/opencv.cabal
@@ -1,6 +1,7 @@
 name:          opencv
-version:       0.0.0.0
+version:       0.0.1.0
 homepage:      https://github.com/LumiGuide/haskell-opencv
+bug-reports:   https://github.com/LumiGuide/haskell-opencv/issues
 license:       BSD3
 license-file:  LICENSE
 author:        Roel van Dijk <roel@lambdacube.nl>, Bas van Dijk <v.dijk.bas@gmail.com>
@@ -9,13 +10,22 @@
 cabal-version: >=1.23
 category:      AI, Graphics
 synopsis:      Haskell binding to OpenCV-3.x
-description:   This is a Haskell library providing a binding to OpenCV-3.x.
+description:   <<https://raw.githubusercontent.com/LumiGuide/haskell-opencv/master/data/haskell-opencv-logo-200x82.png>>
+               .
+               This is a Haskell library providing a binding to OpenCV-3.x.
                It binds directly with the C++ API using the @inline-c@ Haskell library.
                .
                The library is far from complete but the framework is there to easily
                bind missing functionality.
+               .
+               Note that the OpenCV contrib modules are provided by
+               <http://hackage.haskell.org/package/opencv-extra opencv-extra>.
+               .
+               Make sure to checkout the
+               <https://github.com/LumiGuide/haskell-opencv/tree/master/opencv-examples opencv-examples>.
 
 extra-source-files:
+    CHANGELOG.md
     data/*.png
     data/*.jpg
 
@@ -25,6 +35,11 @@
     doc/generated/examples/*.gif
     doc/color_conversions.png
 
+source-repository head
+  type:     git
+  location: git://github.com/LumiGuide/haskell-opencv.git
+  subdir:   opencv
+
 flag internal-documentation
     description: Enables documentation generation for internal modules.
     default: False
@@ -37,46 +52,46 @@
     hs-source-dirs: src
     include-dirs: include
     install-includes:
-      haskell_opencv_matx_typedefs.hpp
-      hsc_macros.hpp
-      namespace.hpp
-      orb.hpp
-      simple_blob_detector.hpp
-      termcriteria.hpp
-      video_motion_analysis.hpp
+        haskell_opencv_matx_typedefs.hpp
+        hsc_macros.hpp
+        namespace.hpp
+        orb.hpp
+        simple_blob_detector.hpp
+        termcriteria.hpp
+        video_motion_analysis.hpp
 
     c-sources:
         src/OpenCV/Calib3d.cpp
-      , src/OpenCV/Core/ArrayOps.cpp
-      , src/OpenCV/Core/Types.cpp
-      , src/OpenCV/Core/Types/Mat.cpp
-      , src/OpenCV/Core/Types/Mat/Repa.cpp
-      , src/OpenCV/Core/Types/Matx.cpp
-      , src/OpenCV/Core/Types/Point.cpp
-      , src/OpenCV/Core/Types/Rect.cpp
-      , src/OpenCV/Core/Types/Size.cpp
-      , src/OpenCV/Core/Types/Vec.cpp
-      , src/OpenCV/Features2d.cpp
-      , src/OpenCV/HighGui.cpp
-      , src/OpenCV/ImgCodecs.cpp
-      , src/OpenCV/ImgProc/ColorMaps.cpp
-      , src/OpenCV/ImgProc/Drawing.cpp
-      , src/OpenCV/ImgProc/FeatureDetection.cpp
-      , src/OpenCV/ImgProc/GeometricImgTransform.cpp
-      , src/OpenCV/ImgProc/ImgFiltering.cpp
-      , src/OpenCV/ImgProc/MiscImgTransform.cpp
-      , src/OpenCV/ImgProc/ObjectDetection.cpp
-      , src/OpenCV/ImgProc/StructuralAnalysis.cpp
-      , src/OpenCV/ImgProc/CascadeClassifier.cpp
-      , src/OpenCV/Internal/Core/Types.cpp
-      , src/OpenCV/Internal/Core/Types/Mat.cpp
-      , src/OpenCV/Internal/Core/Types/Mat/ToFrom.cpp
-      , src/OpenCV/Internal/Exception.cpp
-      , src/OpenCV/Photo.cpp
-      , src/OpenCV/Video.cpp
-      , src/OpenCV/VideoIO/VideoCapture.cpp
-      , src/OpenCV/VideoIO/VideoWriter.cpp
-      , src/OpenCV/Video/MotionAnalysis.cpp
+        src/OpenCV/Core/ArrayOps.cpp
+        src/OpenCV/Core/Types.cpp
+        src/OpenCV/Core/Types/Mat.cpp
+        src/OpenCV/Core/Types/Mat/Repa.cpp
+        src/OpenCV/Core/Types/Matx.cpp
+        src/OpenCV/Core/Types/Point.cpp
+        src/OpenCV/Core/Types/Rect.cpp
+        src/OpenCV/Core/Types/Size.cpp
+        src/OpenCV/Core/Types/Vec.cpp
+        src/OpenCV/Features2d.cpp
+        src/OpenCV/HighGui.cpp
+        src/OpenCV/ImgCodecs.cpp
+        src/OpenCV/ImgProc/ColorMaps.cpp
+        src/OpenCV/ImgProc/Drawing.cpp
+        src/OpenCV/ImgProc/FeatureDetection.cpp
+        src/OpenCV/ImgProc/GeometricImgTransform.cpp
+        src/OpenCV/ImgProc/ImgFiltering.cpp
+        src/OpenCV/ImgProc/MiscImgTransform.cpp
+        src/OpenCV/ImgProc/ObjectDetection.cpp
+        src/OpenCV/ImgProc/StructuralAnalysis.cpp
+        src/OpenCV/ImgProc/CascadeClassifier.cpp
+        src/OpenCV/Internal/Core/Types.cpp
+        src/OpenCV/Internal/Core/Types/Mat.cpp
+        src/OpenCV/Internal/Core/Types/Mat/ToFrom.cpp
+        src/OpenCV/Internal/Exception.cpp
+        src/OpenCV/Photo.cpp
+        src/OpenCV/Video.cpp
+        src/OpenCV/VideoIO/VideoCapture.cpp
+        src/OpenCV/VideoIO/VideoWriter.cpp
+        src/OpenCV/Video/MotionAnalysis.cpp
 
     cc-options: -Wall -std=c++11
     ghc-options: -Wall -fwarn-incomplete-patterns -funbox-strict-fields -O2
@@ -199,8 +214,9 @@
     type: exitcode-stdio-1.0
     hs-source-dirs: doc
     main-is: images.hs
-    other-modules: ExampleExtractor
-                   Language.Haskell.Meta.Syntax.Translate
+    other-modules:
+        ExampleExtractor
+        Language.Haskell.Meta.Syntax.Translate
     default-language: Haskell2010
     ghc-options: -Wall -fwarn-incomplete-patterns -threaded -funbox-strict-fields -O2 -rtsopts
     build-depends:
@@ -213,7 +229,7 @@
       , haskell-src-exts  >= 1.18.2
       , JuicyPixels       >= 3.2.8.1
       , linear            >= 1.20.4
-      , opencv            == 0.0.0
+      , opencv
       , primitive         >= 0.6.1
       , template-haskell  >= 2.10
       , text              >= 1.2.2.1
@@ -243,7 +259,7 @@
       , bytestring        >= 0.10.6
       , lens              >= 4.13
       , linear            >= 1.20.4
-      , opencv            == 0.0.0
+      , opencv
       , QuickCheck        >= 2.8.2
       , repa              >= 3.4.0.2
       , tasty             >= 0.11.0.2
@@ -270,7 +286,7 @@
         base              >= 4.8 && < 5
       , bytestring        >= 0.10.6
       , criterion         >= 1.1.1
-      , opencv            == 0.0.0
+      , opencv
       , repa              >= 3.4.0.2
 
     default-extensions:
diff --git a/src/OpenCV/Calib3d.cpp b/src/OpenCV/Calib3d.cpp
--- a/src/OpenCV/Calib3d.cpp
+++ b/src/OpenCV/Calib3d.cpp
@@ -34,7 +34,36 @@
 }
 
 extern "C" {
-Exception * inline_c_OpenCV_Calib3d_1_6580eb89fe56557059d953009d36dacf9f92ae43(Point2d * pointsPtr_inline_c_0, int32_t cnumPoints_27_inline_c_1, int32_t cwhichImage_27_inline_c_2, Mat * fmPtr_inline_c_3, Mat * epilinesPtr_inline_c_4) {
+Exception * inline_c_OpenCV_Calib3d_1_977ea2515e09e42791f45dfd690308962ddb21ad(Point2d * srcPtr_inline_c_0, int32_t cnumSrcPts_27_inline_c_1, Point2d * dstPtr_inline_c_2, int32_t cnumDstPts_27_inline_c_3, Mat * fmPtr_inline_c_4, int32_t cmethod_27_inline_c_5, double cransacReprojThreshold_27_inline_c_6, Mat * pointMaskPtr_inline_c_7, int32_t cmaxIters_27_inline_c_8, double cconfidence_27_inline_c_9) {
+
+  try
+  {   
+            cv::_InputArray srcPts = cv::_InputArray(srcPtr_inline_c_0, cnumSrcPts_27_inline_c_1);
+            cv::_InputArray dstPts = cv::_InputArray(dstPtr_inline_c_2, cnumDstPts_27_inline_c_3);
+            *fmPtr_inline_c_4 =
+              cv::findHomography
+                  ( srcPts
+                  , dstPts
+                  , cmethod_27_inline_c_5
+                  , cransacReprojThreshold_27_inline_c_6
+                  , *pointMaskPtr_inline_c_7
+                  , cmaxIters_27_inline_c_8
+                  , cconfidence_27_inline_c_9
+                  );
+          
+    return NULL;
+  }
+  catch (const cv::Exception & e)
+  {
+    return new cv::Exception(e);
+  }
+
+}
+
+}
+
+extern "C" {
+Exception * inline_c_OpenCV_Calib3d_2_6580eb89fe56557059d953009d36dacf9f92ae43(Point2d * pointsPtr_inline_c_0, int32_t cnumPoints_27_inline_c_1, int32_t cwhichImage_27_inline_c_2, Mat * fmPtr_inline_c_3, Mat * epilinesPtr_inline_c_4) {
 
   try
   {   
diff --git a/src/OpenCV/Calib3d.hs b/src/OpenCV/Calib3d.hs
--- a/src/OpenCV/Calib3d.hs
+++ b/src/OpenCV/Calib3d.hs
@@ -3,9 +3,12 @@
 
 module OpenCV.Calib3d
     ( FundamentalMatMethod(..)
+    , FindHomographyMethod(..)
+    , FindHomographyParams(..)
     , WhichImage(..)
     -- , calibrateCamera
     , findFundamentalMat
+    , findHomography
     , computeCorrespondEpilines
     ) where
 
@@ -14,6 +17,7 @@
 import "base" Foreign.C.Types
 import qualified "inline-c" Language.C.Inline as C
 import qualified "inline-c-cpp" Language.C.Inline.Cpp as C
+import "data-default" Data.Default
 import "this" OpenCV.Internal.C.Inline ( openCvCtx )
 import "this" OpenCV.Internal.C.Types
 import "this" OpenCV.Internal.Calib3d.Constants
@@ -57,6 +61,24 @@
     Image1 -> 1
     Image2 -> 2
 
+data FindHomographyMethod
+   = FindHomographyMethod_0
+     -- ^ A regular method using all the points.
+   | FindHomographyMethod_RANSAC
+     -- ^ RANSAC-based robust method.
+   | FindHomographyMethod_LMEDS
+     -- ^ Least-Median robust method.
+   | FindHomographyMethod_RHO
+     -- ^ PROSAC-based robust method.
+     deriving (Show)
+
+marshalFindHomographyMethod :: FindHomographyMethod -> Int32
+marshalFindHomographyMethod = \case
+    FindHomographyMethod_0      -> 0
+    FindHomographyMethod_RANSAC -> c'RANSAC
+    FindHomographyMethod_LMEDS  -> c'LMEDS
+    FindHomographyMethod_RHO    -> c'RHO
+
 --------------------------------------------------------------------------------
 
 -- {- |
@@ -110,7 +132,7 @@
 findFundamentalMat pts1 pts2 method = do
     (fm, pointMask) <- c'findFundamentalMat
     -- If the c++ function can't find a fundamental matrix it will
-    -- retrun an empty matrix. We check for this case by trying to
+    -- return an empty matrix. We check for this case by trying to
     -- coerce the result to the desired type.
     catchE (Just . (, unsafeCoerceMat pointMask) <$> coerceMat fm)
            (\case CoerceMatError _msgs -> pure Nothing
@@ -118,7 +140,7 @@
            )
   where
     c'findFundamentalMat = unsafeWrapException $ do
-      fm   <- newEmptyMat
+      fm        <- newEmptyMat
       pointMask <- newEmptyMat
       handleCvException (pure (fm, pointMask)) $
         withPtr fm $ \fmPtr ->
@@ -142,6 +164,70 @@
     c'numPts1 = fromIntegral $ V.length pts1
     c'numPts2 = fromIntegral $ V.length pts2
     (c'method, c'p1, c'p2) = marshalFundamentalMatMethod method
+
+data FindHomographyParams
+   = FindHomographyParams
+     { fhpMethod                :: !FindHomographyMethod
+     , fhpRansacReprojThreshold :: !Double
+     , fhpMaxIters              :: !Int
+     , fhpConfidence            :: !Double
+     } deriving (Show)
+
+instance Default FindHomographyParams where
+    def = FindHomographyParams
+          { fhpMethod                = FindHomographyMethod_0
+          , fhpRansacReprojThreshold = 3
+          , fhpMaxIters              = 2000
+          , fhpConfidence            = 0.995
+          }
+
+findHomography
+    :: (IsPoint2 point2 CDouble)
+    => V.Vector (point2 CDouble) -- ^ Points from the first image.
+    -> V.Vector (point2 CDouble) -- ^ Points from the second image.
+    -> FindHomographyParams
+    -> CvExcept ( Maybe ( Mat ('S '[ 'S 3, 'S 3 ]) ('S 1) ('S Double)
+                        , Mat ('S '[ 'D, 'D   ]) ('S 1) ('S Word8 )
+                        )
+                )
+findHomography srcPoints dstPoints fhp = do
+    (fm, pointMask) <- c'findHomography
+    -- If the c++ function can't find a fundamental matrix it will
+    -- return an empty matrix. We check for this case by trying to
+    -- coerce the result to the desired type.
+    catchE (Just . (, unsafeCoerceMat pointMask) <$> coerceMat fm)
+           (\case CoerceMatError _msgs -> pure Nothing
+                  otherError           -> throwE otherError
+           )
+  where
+    c'findHomography = unsafeWrapException $ do
+      fm        <- newEmptyMat
+      pointMask <- newEmptyMat
+      handleCvException (pure (fm, pointMask)) $
+        withPtr fm $ \fmPtr ->
+        withPtr pointMask $ \pointMaskPtr ->
+        withArrayPtr (V.map toPoint srcPoints) $ \srcPtr ->
+        withArrayPtr (V.map toPoint dstPoints) $ \dstPtr ->
+          [cvExcept|
+            cv::_InputArray srcPts = cv::_InputArray($(Point2d * srcPtr), $(int32_t c'numSrcPts));
+            cv::_InputArray dstPts = cv::_InputArray($(Point2d * dstPtr), $(int32_t c'numDstPts));
+            *$(Mat * fmPtr) =
+              cv::findHomography
+                  ( srcPts
+                  , dstPts
+                  , $(int32_t c'method)
+                  , $(double c'ransacReprojThreshold)
+                  , *$(Mat * pointMaskPtr)
+                  , $(int32_t c'maxIters)
+                  , $(double c'confidence)
+                  );
+          |]
+    c'numSrcPts = fromIntegral $ V.length srcPoints
+    c'numDstPts = fromIntegral $ V.length dstPoints
+    c'method = marshalFindHomographyMethod $ fhpMethod fhp
+    c'ransacReprojThreshold = realToFrac $ fhpRansacReprojThreshold fhp
+    c'maxIters = fromIntegral $ fhpMaxIters fhp
+    c'confidence = realToFrac $ fhpConfidence fhp
 
 {- | For points in an image of a stereo pair, computes the corresponding epilines in the other image
 
diff --git a/src/OpenCV/Core/ArrayOps.cpp b/src/OpenCV/Core/ArrayOps.cpp
--- a/src/OpenCV/Core/ArrayOps.cpp
+++ b/src/OpenCV/Core/ArrayOps.cpp
@@ -439,3 +439,47 @@
 }
 
 }
+
+extern "C" {
+Exception * inline_c_OpenCV_Core_ArrayOps_24_c4b844a405cfe807dac35ef495bd740db3789b10(Mat * matsPtr_inline_c_0, size_t cnumMats_27_inline_c_1, Mat * dstPtr_inline_c_2) {
+
+  try
+  {   
+          cv::hconcat
+            ( matsPtr_inline_c_0
+            , cnumMats_27_inline_c_1
+            , *dstPtr_inline_c_2
+            );
+        
+    return NULL;
+  }
+  catch (const cv::Exception & e)
+  {
+    return new cv::Exception(e);
+  }
+
+}
+
+}
+
+extern "C" {
+Exception * inline_c_OpenCV_Core_ArrayOps_25_f90bb8ea407f21af89dacdb7a4893fb6db43264c(Mat * matsPtr_inline_c_0, size_t cnumMats_27_inline_c_1, Mat * dstPtr_inline_c_2) {
+
+  try
+  {   
+          cv::vconcat
+            ( matsPtr_inline_c_0
+            , cnumMats_27_inline_c_1
+            , *dstPtr_inline_c_2
+            );
+        
+    return NULL;
+  }
+  catch (const cv::Exception & e)
+  {
+    return new cv::Exception(e);
+  }
+
+}
+
+}
diff --git a/src/OpenCV/Core/ArrayOps.hs b/src/OpenCV/Core/ArrayOps.hs
--- a/src/OpenCV/Core/ArrayOps.hs
+++ b/src/OpenCV/Core/ArrayOps.hs
@@ -44,6 +44,8 @@
     , meanStdDev
     , matFlip, FlipDirection(..)
     , matTranspose
+    , hconcat
+    , vconcat
     ) where
 
 import "base" Data.Proxy ( Proxy(..) )
@@ -922,3 +924,77 @@
           cv::transpose(*$(Mat * srcPtr), *$(Mat * dstPtr));
         }|]
     pure $ unsafeCoerceMat dst
+
+{- | Applies horizontal concatenation to given matrices.
+
+Example:
+
+@
+hconcatImg :: Mat ('S '[ 'D, 'D ]) ('S 3) ('S Word8)
+hconcatImg = exceptError $
+    hconcat $ V.fromList
+      [ halfSize birds_768x512
+      , halfSize flower_768x512
+      , halfSize sailboat_768x512
+      ]
+  where
+    halfSize = exceptError . resize (ResizeRel 0.5) InterArea
+@
+
+<<doc/generated/examples/hconcatImg.png hconcatImg>>
+-}
+hconcat
+    :: V.Vector (Mat ('S '[rows, 'D]) channels depth)
+    -> CvExcept (Mat ('S '[rows, 'D]) channels depth)
+hconcat mats = unsafeWrapException $ do
+    dst <- unsafeCoerceMat <$> newEmptyMat
+    handleCvException (pure dst) $
+      withArrayPtr mats $ \matsPtr ->
+      withPtr dst $ \dstPtr ->
+        [cvExcept|
+          cv::hconcat
+            ( $(Mat * matsPtr)
+            , $(size_t c'numMats)
+            , *$(Mat * dstPtr)
+            );
+        |]
+  where
+    c'numMats :: C.CSize
+    c'numMats = fromIntegral $ V.length mats
+
+{- | Applies vertical concatenation to given matrices.
+
+Example:
+
+@
+vconcatImg :: Mat ('S '[ 'D, 'D ]) ('S 3) ('S Word8)
+vconcatImg = exceptError $
+    vconcat $ V.fromList
+      [ halfSize birds_768x512
+      , halfSize flower_768x512
+      , halfSize sailboat_768x512
+      ]
+  where
+    halfSize = exceptError . resize (ResizeRel 0.5) InterArea
+@
+
+<<doc/generated/examples/vconcatImg.png vconcatImg>>
+-}
+vconcat
+    :: V.Vector (Mat ('S '[ 'D, cols ]) channels depth)
+    -> CvExcept (Mat ('S '[ 'D, cols ]) channels depth)
+vconcat mats = unsafeWrapException $ do
+    dst <- unsafeCoerceMat <$> newEmptyMat
+    handleCvException (pure dst) $
+      withArrayPtr mats $ \matsPtr ->
+      withPtr dst $ \dstPtr ->
+        [cvExcept|
+          cv::vconcat
+            ( $(Mat * matsPtr)
+            , $(size_t c'numMats)
+            , *$(Mat * dstPtr)
+            );
+        |]
+  where
+    c'numMats :: C.CSize
+    c'numMats = fromIntegral $ V.length mats
diff --git a/src/OpenCV/Internal/Calib3d/Constants.hsc b/src/OpenCV/Internal/Calib3d/Constants.hsc
--- a/src/OpenCV/Internal/Calib3d/Constants.hsc
+++ b/src/OpenCV/Internal/Calib3d/Constants.hsc
@@ -16,3 +16,8 @@
 #num CV_FM_8POINT
 #num CV_FM_RANSAC
 #num CV_FM_LMEDS
+
+#num LMEDS
+#num RANSAC
+#num RHO
+
