在C++中,当我裁剪图像时,OpenCV只是保留了对原始图像的引用,并添加了一些关于裁剪的信息。(如果我没记错的话。(因此,有人可以";取消折叠";裁剪并获取原始图像。
是否可以使用Python cv2接口来";取消折叠";图像?
在代码方面,我希望实现以下内容:
cropped = image[y: y+h, x: x+w]
uncropped = mat_uncrop(cropped)
其中uncropped
等于image
。
我相信您可以通过访问切片的.base
属性来实现这一点。
A = np.eye(10)
B = A[2:8, 2:8]
B[2,2] = 999
assert B.base is A
print(B.flags)
print(B.base)
C_CONTIGUOUS : False
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
[[ 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 999. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]