試圖編譯以下OpenCV的代碼:克++功能匹配和OpenCV 2.3.0
#include <opencv/cv.h>
int main(int argc,char *argv[])
{
cv::Range img_rowrange, img_colrange, patch_rowrange, patch_colrange;
img_rowrange.start=3;
img_rowrange.end=6;
img_colrange.start=2;
img_colrange.end=5;
patch_rowrange.start=0;
patch_rowrange.end=3;
patch_colrange.start=1;
patch_colrange.end=4;
cv::Mat img(10,10,CV_8UC1,cv::Scalar(1.0));
cv::Mat patch(10,10,CV_8UC1,cv::Scalar(2.0));
cv::Mat mask(10,10,CV_8UC1,cv::Scalar(3.0));
patch(patch_rowrange,patch_colrange).copyTo(img(img_rowrange,img_colrange),mask(patch_rowrange,patch_colrange));
return 0;
}
它編譯和Windows下MSVS2010效果很好,但與G ++和MacOS我收到以下錯誤:
gpp_cv_fail.cpp:22: error: no matching function for call to ‘cv::Mat::copyTo(cv::Mat, cv::Mat)’ /usr/local/include/opencv2/core/core.hpp:1641: note: candidates are: void cv::Mat::copyTo(const cv::_OutputArray&) const /usr/local/include/opencv2/core/core.hpp:1643: note: void cv::Mat::copyTo(const cv::_OutputArray&, const cv::_InputArray&) const
是否有任何解決方法嗎?據我所知,它發生由於在C++中的臨時對象和引用的處理,但我不能找到它的任何合適的溶液(即在分配堆貼片和掩模不解決它)
P.S.我要做的是使用掩碼將一個圖像應用於另一個圖像,這只是顯示問題的一小部分代碼。