Opencv EclipseCDT语法错误解析器错误Mat分配错误:编译并运行ok
在这一行代码中,x以红色下划线表示错误:Opencv EclipseCDT语法错误解析器错误Mat分配错误:编译并运行ok,opencv,eclipse-cdt,Opencv,Eclipse Cdt,在这一行代码中,x以红色下划线表示错误: cv::Mat x = cv::Mat::eye(2,2,CV_8U); 根据以下说明: Invalid arguments ' Candidates are: Mat() Mat(int, int, int) Mat(int, int, int, const cv::Scalar_<double> &) ... (it goes on, full error description at the bottom) 它过去工
cv::Mat x = cv::Mat::eye(2,2,CV_8U);
根据以下说明:
Invalid arguments '
Candidates are:
Mat()
Mat(int, int, int)
Mat(int, int, int, const cv::Scalar_<double> &)
... (it goes on, full error description at the bottom)
它过去工作得很好。我不能确切地知道这是什么时候开始的,但是在中间,我把Eclipse更新到了最后一个稳定版本:2019-06(4.12.0)构建ID:2019614-1200。
这与解析器有关。我使用elf解析器作为错误解析器(Linux的默认配置)。我尝试了C++ 11和C++ 17,并且不知道使用哪一个C++。
将MatExpr
分配给Mat
声明时,会发生一般错误MatExpr
应该自动转换为Mat
(就像它一直做的那样)。它对opencv太特殊了,但有时错误解析器无法识别std::endl
,因此我相信解析器的问题并不特定于opencv
完整的错误描述为了完整性,我很确定这里没有相关内容:
Invalid arguments '
Candidates are:
Mat()
Mat(int, int, int)
Mat(int, int, int, const cv::Scalar_<double> &)
Mat(cv::Size_<int>, int)
Mat(cv::Size_<int>, int, const cv::Scalar_<double> &)
Mat(int, const int *, int)
Mat(int, const int *, int, const cv::Scalar_<double> &)
Mat(const std::vector<int,std::allocator<int>> &, int)
Mat(const std::vector<int,std::allocator<int>> &, int, const cv::Scalar_<double> &)
Mat(const cv::Mat &)
Mat(int, int, int, void *, unsigned long int)
Mat(cv::Size_<int>, int, void *, unsigned long int)
Mat(const std::vector<#0,std::allocator<#0>> &, bool)
Mat(std::initializer_list<#0>)
Mat(std::initializer_list<int>, std::initializer_list<#0>)
Mat(const std::array<#0,unsigned long int3 #1 0> &, bool)
Mat(const cv::Vec<#0,int3 #1 0> &, bool)
Mat(const cv::Matx<#0,int3 #1 0,int3 #2 0> &, bool)
Mat(const cv::Point_<#0> &, bool)
Mat(const cv::Point3_<#0> &, bool)
Mat(const cv::MatCommaInitializer_<#0> &)
Mat(const cv::Mat &, const cv::Range &, const cv::Range &)
Mat(const cv::Mat &, const cv::Rect_<int> &)
Mat(const cv::Mat &, const cv::Range *)
Mat(const cv::Mat &, const std::vector<cv::Range,std::allocator<cv::Range>> &)
Mat(cv::Mat &&)
Mat(int, const int *, int, void *, const unsigned long int *)
Mat(const std::vector<int,std::allocator<int>> &, int, void *, const unsigned long int *)
Mat(const cv::cuda::GpuMat &)
'
无效参数'
候选人包括:
Mat()
Mat(int,int,int)
Mat(int,int,int,const cv::Scalar_uz&)
材料(cv::尺寸,内部)
Mat(cv::Size\uux,int,const cv::Scalar\ux&)
Mat(整数,常数整数*,整数)
Mat(int,const int*,int,const cv::标量&)
Mat(常数std::vector&,int)
Mat(常数std::vector&,int,常数cv::Scalar&)
材料(常数cv::材料&)
Mat(int,int,int,void*,无符号长int)
Mat(cv::大小,整数,空*,无符号长整数)
Mat(常数标准::向量和布尔)
Mat(标准:初始值设定项列表)
Mat(标准::初始值设定项列表,标准::初始值设定项列表)
Mat(常数标准::数组和布尔)
材料(常数cv::向量和布尔)
Mat(常数cv::Matx和bool)
材料(常数cv::点&,布尔)
材料(常数cv::点3_&,布尔)
Mat(常数cv::MatCommainInitializer&)
Mat(常数cv::Mat&,常数cv::Range&,常数cv::Range&)
Mat(常数cv::Mat&,常数cv::Rect&)
材料(常数cv::材料和,常数cv::范围*)
Mat(常数cv::Mat&,常数std::vector&)
材料(cv::材料和材料)
Mat(int,常数int*,int,void*,常数unsigned long int*)
Mat(常数std::vector&,int,void*,常数unsigned long int*)
Mat(常数cv::cuda::GpuMat&)
'
<代码> > p>这是伊柯丽斯的C++分析器中的一个bug,归档为
更新:我也有一个解决方案。你能提供一些上下文吗,比如#include
语句是解析上述代码行中的名称所必需的吗?我想出来了:#include
。不过,作为将来的参考,如果你包含一个完整的源文件,人们的生活会更轻松。你是对的,我应该意识到这一点。它是#include
,与您计算的差不多。非常感谢!我已经没有主意了,正在寻找配置中的错误。我印象深刻的是,您如何将其概括为“当其中一个转换运算符是模板时解决重载转换运算符的错误”。而且bug已经被发现了,这很快。
Invalid arguments '
Candidates are:
Mat()
Mat(int, int, int)
Mat(int, int, int, const cv::Scalar_<double> &)
Mat(cv::Size_<int>, int)
Mat(cv::Size_<int>, int, const cv::Scalar_<double> &)
Mat(int, const int *, int)
Mat(int, const int *, int, const cv::Scalar_<double> &)
Mat(const std::vector<int,std::allocator<int>> &, int)
Mat(const std::vector<int,std::allocator<int>> &, int, const cv::Scalar_<double> &)
Mat(const cv::Mat &)
Mat(int, int, int, void *, unsigned long int)
Mat(cv::Size_<int>, int, void *, unsigned long int)
Mat(const std::vector<#0,std::allocator<#0>> &, bool)
Mat(std::initializer_list<#0>)
Mat(std::initializer_list<int>, std::initializer_list<#0>)
Mat(const std::array<#0,unsigned long int3 #1 0> &, bool)
Mat(const cv::Vec<#0,int3 #1 0> &, bool)
Mat(const cv::Matx<#0,int3 #1 0,int3 #2 0> &, bool)
Mat(const cv::Point_<#0> &, bool)
Mat(const cv::Point3_<#0> &, bool)
Mat(const cv::MatCommaInitializer_<#0> &)
Mat(const cv::Mat &, const cv::Range &, const cv::Range &)
Mat(const cv::Mat &, const cv::Rect_<int> &)
Mat(const cv::Mat &, const cv::Range *)
Mat(const cv::Mat &, const std::vector<cv::Range,std::allocator<cv::Range>> &)
Mat(cv::Mat &&)
Mat(int, const int *, int, void *, const unsigned long int *)
Mat(const std::vector<int,std::allocator<int>> &, int, void *, const unsigned long int *)
Mat(const cv::cuda::GpuMat &)
'