我在Mat
对象中有几张图像,它们都具有相同的尺寸我想创建一个 bixcv::Mat
对象来保存它们
所以新矩阵的维度是:widthNew = widthOld x number of matrixes,height保持不变。
我发现这样的副本可以使用:
void cvCopy(const CvArr* src, CvArr* dst, const CvArr* mask=NULL)
但是,如何为三个矩阵定义三个不同的时间?
问候, 莫阿塔兹
我在Mat
对象中有几张图像,它们都具有相同的尺寸我想创建一个 bixcv::Mat
对象来保存它们
所以新矩阵的维度是:widthNew = widthOld x number of matrixes,height保持不变。
我发现这样的副本可以使用:
void cvCopy(const CvArr* src, CvArr* dst, const CvArr* mask=NULL)
但是,如何为三个矩阵定义三个不同的时间?
问候, 莫阿塔兹
我认为有一个简单的方法可以做到这一点。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);
我希望这会有所帮助。
您使用 roi 定义实际上是目标图像区域的图像,然后复制到该区域。请参阅在另一个 ROI 内复制 cv::Mat
您可能想查看的源代码cvShowManyImages()
,该函数将多张图像作为输入并将它们连接成一个要显示的 3 通道图像:
使用的方法是设置单个大图像的 ROI,然后调整输入图像的大小并将其复制到单个大图像上。
如果您创建的目标图像足够大以容纳其他图像,则无需调整它们的大小。
如果您想知道如何在IplImage
<->之间进行转换cv::Mat
,请查看此线程。