Eigen support

// global functions

template <
    typename _Tp,
    int _rows,
    int _cols,
    int _options,
    int _maxRows,
    int _maxCols
    >
static
void
cv::cv2eigen(
    const Mat& src,
    Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& dst
    );

template <
    typename _Tp,
    int _rows,
    int _cols,
    int _options,
    int _maxRows,
    int _maxCols
    >
static
void
cv::cv2eigen(
    const Matx<_Tp, _rows, _cols>& src,
    Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& dst
    );

template <typename _Tp>
static
void
cv::cv2eigen(
    const Mat& src,
    Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst
    );

template <
    typename _Tp,
    int _rows,
    int _cols
    >
static
void
cv::cv2eigen(
    const Matx<_Tp, _rows, _cols>& src,
    Eigen::Matrix<_Tp, Eigen::Dynamic, Eigen::Dynamic>& dst
    );

template <typename _Tp>
static
void
cv::cv2eigen(
    const Mat& src,
    Eigen::Matrix<_Tp, Eigen::Dynamic, 1>& dst
    );

template <
    typename _Tp,
    int _rows
    >
static
void
cv::cv2eigen(
    const Matx<_Tp, _rows, 1>& src,
    Eigen::Matrix<_Tp, Eigen::Dynamic, 1>& dst
    );

template <typename _Tp>
static
void
cv::cv2eigen(
    const Mat& src,
    Eigen::Matrix<_Tp, 1, Eigen::Dynamic>& dst
    );

template <
    typename _Tp,
    int _cols
    >
static
void
cv::cv2eigen(
    const Matx<_Tp, 1, _cols>& src,
    Eigen::Matrix<_Tp, 1, Eigen::Dynamic>& dst
    );

template <
    typename _Tp,
    int _rows,
    int _cols,
    int _options,
    int _maxRows,
    int _maxCols
    >
static
void
cv::eigen2cv(
    const Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& src,
    Mat& dst
    );

template <
    typename _Tp,
    int _rows,
    int _cols,
    int _options,
    int _maxRows,
    int _maxCols
    >
static
void
cv::eigen2cv(
    const Eigen::Matrix<_Tp, _rows, _cols, _options, _maxRows, _maxCols>& src,
    Matx<_Tp, _rows, _cols>& dst
    );