【发布时间】:2012-01-02 15:16:24
【问题描述】:
我有两张图片,第一张比另一张小。我需要在第一张图片上复制第二张图片。为此,我需要在第一个上设置 ROI,将第二个图像复制到第一个上,然后重置 ROI。
但是我使用的是 C++ 接口,所以我不知道该怎么做。在 C 语言中,我可以使用 cvSetImageROI,但这在 C++ 接口上不起作用。
那么基本上 cvSetImageROI 的 C++ 替代方案是什么?
//output is a pointer to the mat whom I want the second image (colourMiniBinMask) copied upon
Rect ROI (478, 359, 160, 120);
Mat imageROI (*output, ROI);
colourMiniBinMask.copyTo (imageROI);
imshow ("Gravity", *output);
【问题讨论】:
-
我已经试过了。我没有收到任何错误,但我设置 ROI 的图像不受影响 - 它保持不变。我只是获取图像那部分的副本,而不是访问它。 (我认为)。
-
如果 src 和 dst 矩阵的格式不匹配(即 src=BGR,dst=BGRA),copyTo 函数将重新创建内容。如果是这种情况,“imageROI.data”将被重新分配,您会看到指针的地址将被更改。另一方面,imageROI 的标题将保持不变。在这种情况下使用 mixChannels、merge 或 cvtColor 函数。