使用 opencv 初始化多维矩阵会给出链接错误

Multi-dimensional matrix initialization to ones using opencv gives a linking error

提问人:paghdv 提问时间:6/26/2013 最后编辑:Cœurpaghdv 更新时间:9/3/2017 访问量:584

问:

我在 visual studio 11 下使用 opencv 时遇到一个奇怪的错误。当我这样做时:

int sz[]={3,3,3};
T=Mat(3,sz,CV_32F);

或者这个(初始化为 1 的 2D 矩阵):

T=Mat::ones(3,3,CV_32F);

一切正常

但是这个(初始化为 1 的 3D 矩阵):

int sz[]={3,3,3};
T=Mat::ones(3,sz,CV_32F);

给我一个链接错误:

错误 6 错误 LNK2019:未解析的外部符号“public:静态类 cv::MatExpr __cdecl cv::Mat::ones(int,int const *,int)”

为什么会这样?当我用 1 初始化 n 维矩阵时,我是否需要链接一些额外的内容?

opencv 多维数组 初始化 unresolved-external

评论


答:

2赞 Andrea Riccardi 6/26/2013 #1

据我所知,ones 方法只创建 2D 矩阵,如果要使用指定值初始化矩阵,则必须使用构造函数进行初始化

int sz[]={3,3,3};
T=Mat(3,sz,CV_32F, Scalar::all(1));

评论

0赞 paghdv 6/27/2013
我也可以从错误中推断出这一点,但为什么是链接错误?它可能是来自另一个类的方法吗?(我不这么认为)。我也看不出为什么只为 2D 矩阵实现这一点。
0赞 Andrea Riccardi 6/28/2013
似乎在头文件中声明了多维矩阵的方法 cv::Mat::ones(int,int const *,int),但它没有实现,由此链接器错误