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错误的主要内容,如果未能解决你的问题,请参考以下文章