linux中的C++ OpenCV2 cv::Mat::copyTo错误

Posted

技术标签:

【中文标题】linux中的C++ OpenCV2 cv::Mat::copyTo错误【英文标题】:C++ OpenCV2 cv::Mat::copyTo error in linux 【发布时间】:2010-07-31 12:37:32 【问题描述】:

在Linux中尝试在OpenCV2中编译以下代码时,

cv::Mat image1, image2;
cv::Rect rect1, rect2;
...
image1(rect1).copyTo(image2(rect2));

我收到以下错误:

x.cpp:在成员函数‘cv::Mat Process(cv::Mat)’中: x.cpp:241: 错误: 没有匹配函数调用‘cv::Mat::copyTo(cv::Mat)’ cxcore.hpp:794:注意:候选人是:void cv::Mat::copyTo(cv::Mat&) const cxcore.hpp:796: 注意: void cv::Mat::copyTo(cv::Mat&, const cv::Mat&) const

注意:此代码可以在 Windows 中完美编译和运行。

有什么帮助吗?

【问题讨论】:

【参考方案1】:

从我看到的here 来看,Mat 的 operator() 需要一个 Mat 类型的参数,而不是 Mat&。这似乎是这里的问题。

尝试添加一个 Mat 类型的临时对象。见下文。

cv::Mat image1, image2;
cv::Rect rect1, rect2;
...
cv::Mat extractedImage2 = image1(rect2);
image1(rect1).copyTo(extractedImage2);

但我必须说我不是 openCV 专家,所以这只是基于我的 c++ 知识的答案。

【讨论】:

谢谢,我没有得到很好的描述,但你的代码编译得很好:) 应该“cv::Mat extractImage2 = image1(rect2);”改为“cv::Mat extractImage2 = image2(rect2);” ?

以上是关于linux中的C++ OpenCV2 cv::Mat::copyTo错误的主要内容,如果未能解决你的问题,请参考以下文章

Borland C++ 2009 中的 OpenCV

调整图像类型“Mat”opencv C++的大小

OpenCV 2.4 C++ 中的 chamferMatching 文档

在 C++ 和 OpenCV 中调用其他文件中的函数

分段错误原因未知Opencv

C++ 和 OpenCV 中的 SSE 均值滤波器