提问人:paghdv 提问时间:6/26/2013 最后编辑:Cœurpaghdv 更新时间:9/3/2017 访问量:584
使用 opencv 初始化多维矩阵会给出链接错误
Multi-dimensional matrix initialization to ones using opencv gives a linking error
问:
我在 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 维矩阵时,我是否需要链接一些额外的内容?
答:
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),但它没有实现,由此链接器错误
评论