c++ - 将一个矩阵复制到另一个矩阵的列中

标签 c++ opencv

我正在尝试创建一个矩阵,其列包含其他矩阵的行数据。不过,我的编译器告诉我,没有像 Mat::copyTo(Mat) 这样的函数,尽管它是 in the docs。我的 IDE 会自动完成它(这意味着它在标题中并且包含标题)。

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

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

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

Edit2:这是实际错误:

/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

最佳答案

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

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

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

祝你好运。

关于c++ - 将一个矩阵复制到另一个矩阵的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865820/

相关文章:

C++ 执行 CMD 命令

c++ - 计算子字符串实例数的简单 C++ 程序

java - 使用更少的内存将 Bitmap 传递给 JNI

python - 我们如何在 python 中读取 16 个无符号整数 (16 uint) jpeg 文件

python - OpenCV 的视频捕获不返回图像

c++ - 人们如何想出按位问题的解决方案?

C++ 数组列表

c++ - 为什么矩阵没有正确初始化/打印?

python - OpenCV 中的 Lucas-Kanade 光流对我不起作用

opencv - 比较 RGB 直方图 : plt. hist、np.histogram 和 cv2.compareHist