我有两个图像,第一个小于另一个。我需要将第二张图片复制到第一张图片上。为此,我需要在第一个图像上设置ROI,将第二个图像复制到第一个图像上,然后重置ROI。

但是我正在使用C++接口(interface),所以我不知道该怎么做。在C语言中,我本可以使用cvSetImageROI,但这在C++接口(interface)上不起作用。

那么,基本上什么是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。您可以调整第二张图像的大小,然后将其复制到第一张图像中。

但是,如果要复制第二个中的第一个,我认为这段代码应该可以工作:

cv::Rect roi = cv::Rect((img2.cols - img1.cols)/2,(img2.rows - img1.rows)/2,img1.cols,img1.rows);

cv::Mat roiImg;
roiImg = img2(roi);

img1.copyTo(roiImg);

关于c++ - 如何在OpenCV中设置ROI?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8206466/

10-10 21:29