我想做一个非常简单的事情:将图像内的区域复制到新图像中的新区域。在OpenCV 2.3速查表中,他们提出以下解决方案:


Rect r(1, 1, 10, 20);
Mat dstroi = dst(Rect(0,10,r.width,r.height));
src(r).convertTo(dstroi, dstroi.type(), 1, 0);

我的代码如下:
Mat frameO, frameS;

original >> frameO;
stabilized >> frameS;

Mat output(frameO.rows+40, frameO.cols*2+60, CV_32FC3);
output.setTo(0);
Rect r(0,0, frameO.cols, frameO.rows);
Mat destROI = output(Rect(20,20, frameO.cols, frameO.rows));
frameO(r).copyTo(destROI);

我只想将输出图像frameO复制到Rect(20,20, frameO.cols, frameO.rows)位置。任何人都可以告诉我为什么这不起作用?

最佳答案

实际上,这些命令在OpenCV 2.3中不起作用,但是现在以下版本在2.4版本中可以正常使用:

Mat frame1 = imread(nameReading1);

Mat output(frame1.rows*2, frame1.cols*2, frame1.type());
output.setTo(0);

frame1.copyTo(output(Rect(0, 0, frame1.cols, frame1.rows)));

只要类型同意,这将在输出中复制frame1,因此在创建输出时要小心。 frame1将被复制到Rect(0, 0, frame1.cols, frame1.rows)定义的输出中的ROI中。

关于c++ - 将图像的区域复制到另一个图像中的另一个区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10137766/

10-08 22:17