语法检查器指出一些我不知道为什么的错误
Syntax checker pointing some errors I don't know why
我将Eclipse CDT更新到9.8.1,语法检查器开始指出一些不是这样的错误。 在此示例中,p3Dw
和Ow
是cv::Mat
对象,语法检查器将PO
下划线为"无效参数":
cv::Mat PO = p3Dw-Ow;
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 &)
'
它仅在使用 MatExpr 在声明上分配 Mat 时发生。 否则不会发生:您可以声明一个 Mat 分配另一个 Mat,或者将 MatExpr 分配给先前声明的 Mat。
这段代码已经工作了多年。 现在我弄乱了它,我暂时无法编译它。
我清理了项目并重建了索引,没有任何改进。
还有其他奇怪的误导性错误。 使用命名空间标准;检查器将向量和unique_lock标记为错误,除非我添加 std::
有什么想法吗? 谢谢。
opencv4
文档中Mat& Mat::operator=(const MatExpr &expr);
了函数MatExpr operator-(const Mat &a, const Mat &b);
函数和赋值运算符的自由函数,但没有接受MatExpr
Mat
构造函数。
但是有一个转换运算符:cv::MatExpr::operator Mat() const;
应该使您的代码正常工作,并且在opencv 3.4.4中确实有效。最小示例:
#include <opencv2/core/mat.hpp> // it is really opencv 3.4.4
int main() {
cv::Mat p3Dw;
cv::Mat Ow;
cv::Mat PO = p3Dw-Ow;
}
如果它在 opencv 4 中不起作用,他们可能已经使复制构造函数explicit
(即使它不在手册中(。如果是这样,请将MatExpr
转换为Mat
:
cv::Mat PO = static_cast<cv::Mat>(p3Dw-Ow);
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 我不知道为什么这段代码会让核心被转储?
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- if-else 语句仅按特定顺序工作,我不知道为什么
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 函数抛出seg错误,我不知道为什么
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- "错误:在'.标记'之前出现预期的主表达式,我不知道为什么
- 我正在制作c ++代码,但发生错误我不知道为什么
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 我的Arduino串行命令行不起作用,我不知道为什么
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- 我不知道为什么我的矢量无法推回
- 语法检查器指出一些我不知道为什么的错误
- 我不知道为什么我的字符串无法保存值
- 编写蒙特卡洛集成程序,我不知道为什么我会收到某些错误
- 我不知道为什么会发生堆损坏(关于内存分配问题)
- 库特是空的,我不知道为什么
- C++:我需要在这里包含这个标题,我不知道为什么