尝试在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中编译并运行完美。
任何帮助?
答案 0 :(得分:2)
从我看到here,mat的operator()需要Mat类型的参数而不是Mat&amp ;.这似乎是这里的问题。
尝试添加Mat类型的临时对象。见下文。
cv::Mat image1, image2;
cv::Rect rect1, rect2;
...
cv::Mat extractedImage2 = image1(rect2);
image1(rect1).copyTo(extractedImage2);
但我必须说我不是openCV专家,所以这只是基于我的c ++知识的答案。