C++ 手动初始化cv::Matx?

C++ 手动初始化cv::Matx?,c++,opencv,C++,Opencv,我有一些摄像机校准数据,格式如下: 0.3072423 -0.0104122 -0.9515744 -208.5614 0.003617216 0.9999457 -0.009773563 -4.705516 0.9516244 -0.0004391983 0.3072633 -152.5427 0 0 0 1 我有一个函数,它将const

我有一些摄像机校准数据,格式如下:

  0.3072423    -0.0104122    -0.9515744     -208.5614
0.003617216     0.9999457  -0.009773563     -4.705516
  0.9516244 -0.0004391983     0.3072633     -152.5427
          0             0             0             1
我有一个函数,它将
const cv::Matx&M
作为参数。(来自第三方代码)

…但它给出了上面的错误。我的错误是什么


谢谢。

基本上,您必须使用特定类型的Matx。就您的目的而言,它是浮动的或双重的。将
cv::Matx
替换为
cv::Matx
并删除主菜单中的
模板

template<typename T>
cv::Matx<T, 6, 1> hom2cayley(const cv::Matx<T, 4, 4>& M)
{
    cv::Matx<T, 3, 3> R(M(0, 0), M(0, 1), M(0, 2),
        M(1, 0), M(1, 1), M(1, 2),
        M(2, 0), M(2, 1), M(2, 2));
    cv::Matx<T, 3, 1> C = rot2cayley(R);

    return cv::Matx<T, 6, 1>(C(0, 0), C(1, 0), C(2, 0),
        M(0, 3), M(1, 3), M(2, 3));
}
void main()
{
    template<typename T>

    const cv::Matx<T, 4, 4> camData{ 0.3072423, - 0.0104122, - 0.9515744, - 208.5614,
        0.003617216,     0.9999457, - 0.009773563, - 4.705516,
        0.9516244, - 0.0004391983,     0.3072633, - 152.5427,
        0 ,            0 ,            0    ,         1 };

    hom2cayley(camData);  //invalid argument, camData is undefined.
}