Python的
skimage
包有一个函数transform.AffineTransform()
,其中一个选项是shear
,可以进行水平剪切。显然,我可以通过来回切换轴来进行垂直剪切。这是我的做法:from skimage import data, transform
import matplotlib.pyplot as plt
import numpy as np
img = data.astronaut()/255
v = 0.3
tf = transform.AffineTransform(shear=-v)
img2 = transform.warp(img, tf, order=1, preserve_range=True, mode='constant')
img3 = np.swapaxes(img, 0, 1)
img3 = transform.warp(img3, tf, order=1, preserve_range=True, mode='constant')
img3 = np.swapaxes(img3, 0, 1)
plt.imshow(np.hstack([img, img2, img3]))
plt.show()
无论如何,我很惊讶没有更直接的方法来定义垂直剪切选项... 我错了吗?
shear
参数存在一些争议:https://github.com/scikit-image/scikit-image/issues/3239 - 无论如何,您可能希望暂时坚持定义变换矩阵! - jmetz