9

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

所以新矩阵的维度是:widthNew = widthOld x number of matrixes,height保持不变。

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

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

但是,如何为三个矩阵定义三个不同的时间?

问候, 莫阿塔兹

4

3 回答 3

14

我认为有一个简单的方法可以做到这一点。OpenCV有一个未记录的方法,称为hconcat()and 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);

我希望这会有所帮助。

于 2015-12-16T15:58:47.963 回答
6

您使用 roi 定义实际上是目标图像区域的图像,然后复制到该区域。请参阅在另一个 ROI 内复制 cv::Mat

于 2012-06-13T16:42:47.000 回答
1

您可能想查看的源代码cvShowManyImages(),该函数将多张图像作为输入并将它们连接成一个要显示的 3 通道图像:

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

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

如果您想知道如何在IplImage<->之间进行转换cv::Mat,请查看此线程

于 2012-06-13T21:14:07.183 回答