我在Mat
个对象中有几个图像都具有相同的尺寸
我想创建一个bix cv::Mat
对象来保存它们
所以新矩阵的维数为: widthNew = widthOld x矩阵数,高度保持不变。
我发现这样的副本可以使用:
完成void cvCopy(const CvArr* src, CvArr* dst, const CvArr* mask=NULL)
然后,如何为三个矩阵定义三个不同的掩码?
此致 Moataz
答案 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。