选择一个 Mat 的子集并复制它们以在 C++/Opencv 中创建一个新的 mat

Posted

技术标签:

【中文标题】选择一个 Mat 的子集并复制它们以在 C++/Opencv 中创建一个新的 mat【英文标题】:Select a subset of a Mat and copy them to create a new mat in C++/Opencv 【发布时间】:2013-07-17 04:22:26 【问题描述】:

在 C++/opencv 中,如何选择大 Mat 的子集并复制它们以创建新 Mat?我知道如何使用 copyto、colrange、rowrange 等,但不知道如何将它们组合在一起以开发出体面和高效的代码。谢谢!

【问题讨论】:

看看Mat::clone() 【参考方案1】:

您可以为此使用copyTo():

//copy a sub matrix of X to Y with starting coodinate (startX,startY)
// and dimension (cols,rows)
cv::Mat tmp = X(cv::Rect(startX,startY,cols,rows));
cv::Mat Y;
tmp.copyTo(Y);

或直接:

cv::Mat Y;
X(cv::Rect(startX,startY,cols,rows)).copyTo(Y);

【讨论】:

以上是关于选择一个 Mat 的子集并复制它们以在 C++/Opencv 中创建一个新的 mat的主要内容,如果未能解决你的问题,请参考以下文章

c ++:选择一个std :: vector的子集,基于预定义的元素索引

如何在不同线程的 C++/CLI 中将图像数据从 BitmapSource (WPF) 复制到 cv::Mat (OpenCV)?

如何按名称选择列的子集来计算 R 中的行均值? [复制]

验证对象名称以在日期选择器上设置 UILabel 文本名称

matlab怎么将mat文件转换成txt文件

matlab中,如何将.txt格式文件转换成.mat格式文件