我有两个图像,第一个小于另一个。我需要将第二张图片复制到第一张图片上。为此,我需要在第一个图像上设置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/