假设我在python中有一个存储在numpy数组中的2D图像并称为npimage(1024倍1024像素)。 我想定义一个函数ShowImage,它将一个numpy数组的参数作为参数:
def ShowImage(npimage,SliceNumpy):
imshow(npimage(SliceNumpy))
这样它可以绘制图像的给定部分,让我们说:
ShowImage(npimage,[200:800,300:500])
将绘制200到800之间的行和300到500之间的行的图像,即
imshow(npimage[200:800,300:500])
有可能在python中这样做吗?暂时将[200:800,300:500]之类的内容作为参数传递给函数导致错误。
感谢您提供任何帮助或链接。 格雷格
答案 0 :(得分:2)
这是不可能的,因为[...]
在没有直接用作slice
时会出现语法错误,但您可以这样做:
仅提供相关的切片图像 - 不使用单独的参数ShowImage(npimage[200:800,300:500])
(无逗号)
或提供tuple
slices
作为参数:ShowImage(npimage,(slice(200,800),slice(300:500)))
。这些可以用于在函数内部进行切片,因为它们只是定义此切片的另一种方式:
npimage[(slice(200,800),slice(300, 500))] == npimage[200:800,300:500]
第二种选择的可能解决方案可能是:
import matplotlib.pyplot as plt
def ShowImage(npimage, SliceNumpy):
plt.imshow(npimage[SliceNumpy])
plt.show()
ShowImage(npimage, (slice(200,800),slice(300, 500)))
# plots the relevant slice of the array.