尝试在 Linux 中的 OpenCV2 中编译以下代码时,
cv::Mat image1, image2;
cv::Rect rect1, rect2;
...
image1(rect1).copyTo(image2(rect2));
我收到以下错误:
x.cpp: In member function ‘cv::Mat Process(cv::Mat)’:
x.cpp:241: error: no matching function for call to ‘cv::Mat::copyTo(cv::Mat)’
cxcore.hpp:794: note: candidates are: void cv::Mat::copyTo(cv::Mat&) const
cxcore.hpp:796: note: void cv::Mat::copyTo(cv::Mat&, const cv::Mat&) const
注意:这段代码可以在 Windows 中完美编译和运行。
有什么帮助吗?
最佳答案
据我所见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++ 知识的答案。
关于Linux 中的 C++ OpenCV2 cv::Mat::copyTo 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378128/