我必须用python写一个函数来获取一个PIL图像并将其拉伸成矩形形状
我试着运行这段代码:
def stretch_image(im3D):
width, height = im3D.size
data = np.array(im3D, dtype=np.uint8)
matrix = data.reshape(height, width)
if not np.linalg.det(matrix):
raise ValueError("The matrix is not invertible")
invertible_matrix = np.linalg.inv(matrix)
stretch3Dimg = matrix * invertible_matrix
return stretch3Dimg
我希望能得到一张
1条答案
按热度按时间zpgglvta1#
好的,主要问题是你试图使用原始矩阵和它的逆矩阵之间的矩阵乘法来拉伸图像,这不是拉伸图像的正确方法。像缩放旋转这样更简单的变换可以用简单的矩阵乘法来完成,但是当你试图拉伸图像以适应矩形时,就不需要简单的矩阵乘法操作了。这个discussion on StackExchange可能会帮助你的方法。
对此的替代方案将是使用简单的基于插值的方法。您可以通过创建具有所需尺寸的新空白图像,然后使用原始图像填充像素来完成此操作。
下面是代码的修改版本,可以帮助您做到这一点: