在OpenCV中连接Mat

时间:2012-06-13 16:27:39

标签: opencv concatenation opencv-mat

我在Mat个对象中有几个图像都具有相同的尺寸 我想创建一个bix cv::Mat对象来保存它们

所以新矩阵的维数为: widthNew = widthOld x矩阵数,高度保持不变。

我发现这样的副本可以使用:

完成
void cvCopy(const CvArr* src, CvArr* dst, const CvArr* mask=NULL)

然后,如何为三个矩阵定义三个不同的掩码?

此致 Moataz

3 个答案:

答案 0 :(得分:6)

使用roi定义图像,该图像实际上是目标图像的一个区域,然后复制到该图像。见Copy an cv::Mat inside a ROI of another one

答案 1 :(得分:4)

我认为有一种简单的方法可以做到这一点。 OpenCV 有一个名为hconcat()vconcat()的未记录方法。第一个用于水平连接,第二个用于垂直连接。

您可以这样使用它们:

Mat A, B;
... //In this part you initialize the Mat A and Mat B.

Mat H, V; //These are the destination matrices
hconcat(A, B, H);
vconcat(A, B, V);

我希望这可以提供帮助。

答案 2 :(得分:1)

您可能需要查看the source code of cvShowManyImages(),这是一个将多个图像作为输入并将它们连接成一个3通道图像以显示的函数:

  

使用的方法是设置单个大图像的ROI,然后调整大小   并将输入图像复制到Single Big Image。

如果您创建的目标图片足以容纳其他图片,则无需调整其大小。

如果您想知道如何在IplImage< - >之间进行转换cv::Mat,请检查this thread