将一个矩阵复制到另一个矩阵中

时间:2013-04-07 18:00:48

标签: c++ opencv

我正在尝试创建一个矩阵,其列包含其他矩阵行的数据。我的编译器告诉我,虽然它是in the docs并且我的IDE自动填充它(意味着它在标题中并包含标题),但它没有Mat::copyTo(Mat)这样的功能。

binary.row(selectedRow).reshape(1).copyTo(data.col(0));
reduced.row(selectedRow).reshape(1).copyTo(data.col(1));

任何想法都失败了?我厌倦了OpenCV的InputArray / OutputArray风格,我希望他们只是将方法签名与实际预期相匹配,而不是依赖于编译时/运行时错误。

编辑我知道我可以运行一个for循环并复制数据并完成它,但应该有一种简单的方法可以使用OpenCV方法完成此操作。< / p>

编辑2:这是实际错误:

/usr/include/opencv2/core/core.hpp:1651:10: note: void cv::Mat::copyTo(cv::OutputArray) const
/usr/include/opencv2/core/core.hpp:1651:10: note:   no known conversion for argument 1 from 'cv::Mat' to 'cv::OutputArray {aka const cv::_OutputArray&}'
/usr/include/opencv2/core/core.hpp:1653:10: note: void cv::Mat::copyTo(cv::OutputArray, cv::InputArray) const
/usr/include/opencv2/core/core.hpp:1653:10: note:   candidate expects 2 arguments, 1 provided

1 个答案:

答案 0 :(得分:1)

检查返回的错误消息,copyTo()的可能允许覆盖似乎都不是很好的匹配。

双参数覆盖显然不起作用。单个参数覆盖似乎需要一个非const引用作为复制目标(当考虑它时肯定是有意义的)。也就是说,data.col(0)data.col(1)似乎是返回const引用,它们不可写,因此也不是很好的匹配。

您可能必须使用中间对象,然后使用数据列的setter,除非data可以返回对您希望成为副本目标的对象的可写引用。

祝你好运。