OpenCV python 裁剪图像

hor*_*ory 1 python opencv image

我创建了黑色图像,然后在该图像中绘制了一个红色矩形。之后我裁剪了这个图像并使用命令在裁剪后的图像中绘制了另一个矩形。cv2.rectangle(crop,(50,50),(150,150),(0,0,255),3)

当我在最后显示它时,为什么第二个矩形会出现在原始图像中?我希望只看到第一个矩形。

import cv2
import numpy as np

#create image
image = np.zeros((400,400,3), np.uint8)

#draw rectangle into original image
cv2.rectangle(image,(100,100),(300,300),(0,0,255),3)

#crop image
crop = image[100:300,100:300]

#draw rectangle into cropped image
cv2.rectangle(crop,(50,50),(150,150),(0,0,255),3)
cv2.imshow('Result', image)
cv2.waitKey()    

cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

Mar*_*gur 5

crop = image[100:300,100:300]在原始图像而不是新对象上创建视图。修改该视图将修改底层原始图像。有关更多详细信息,请参阅http://scipy-cookbook.readthedocs.io/items/ViewsVsCopies.html

您可以通过在裁剪时创建副本来解决此问题: crop = image[100:300,100:300].copy()

注:image[100:300,100:300]参数y: y+h, x: x+wx: x+w, y: y+h