OpenCV:如何用较小的rect替换较大的rect

时间:2017-08-04 11:45:11

标签: opencv

我正在做一些操作,我需要用较小的矩形替换较大的矩形。

大多数答案建议使用smallerRectMat.copyTo(biggerRectMat),但它没有给我输出要求。子图像已更改,但原始图像不变。

当我试图看到submat变成相同的较小矩形时。

Mat rectNose = testBuffer.submat(rectA.y,rectA.y+rectA.height,rectA.x,rectC.x+rectC.width);
Rect biggerRect = getHeadContour(testBuffer);
Mat rectHead = testBuffer.submat(biggerRect.y+1,biggerRect.y+biggerRect.height,biggerRect.x+1,biggerRect.x+biggerRect.width);
rectNose.copyTo(rectHead);
Imgcodecs.imwrite("/Users/test.jpg",rectHead);
Imgcodecs.imwrite("/Users/test1.jpg",rectNose);
Imgcodecs.imwrite("/Users/test1.jpg",testBuffer);

基本上我想将鼻子区域附近的矩形复制到前额有蓝色边界的矩形。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以尝试投资回报率(图像区域)缩放

smallRect = img[rectA.y:rectA.y+rectA.height, rectA.x:rectC.x+rectC.width]
upscaledRegion = cv2.resize(smallRect , (biggerRect.width, biggerRect.height), interpolation=cv2.INTER_AREA)
img[biggerRect.y:biggerRect.y+biggerRect.height, biggerRect.x:biggerRect.x+biggerRect.width] = upscaledRegion