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

标签 c++ linux opencv

尝试在 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/

相关文章:

c++ - 在 C++ 中检测新设备插入

c++ - SciLinux : libgfortran. so.3:找不到版本 'GFORTRAN_1.4'

linux - 使用unix脚本发布一条一条地显示和删除记录

c++ - 如何检测强度梯度方向

c++ - 命名空间中的 ostream 运算符 << 隐藏了其他 ostream::operator

c++ - 使用数组参数的函数特化

linux - 在程序集中使用参数调用 execve 的正确方法是什么?

c++ - OpenCV GPU SURF ROI 错误?

c++ - 调用 aruco::detectMarkers crash 时 Opencv 停止

c++ - Windows sleep 不一致?