我有一个包含一些图像数据的numpy数组.我想绘制在图像上绘制的横断面的"轮廓".最简单的情况是平行于图像边缘运行的轮廓,因此如果图像阵列是imdat,则所选点处的轮廓(r,c)简单地imdat[r](水平)或imdat[:,c](垂直).
现在,我要带作为输入两个点(r1,c1)和(r2,c2),卧都里面imdat.我想在连接这两点的线上绘制值的轮廓.
沿着这样一条线从numpy数组中获取值的最佳方法是什么?更一般地说,沿路径/多边形?
我之前使用过切片和索引,但是对于连续切片元素不在同一行或列中的情况,我似乎无法找到优雅的解决方案.谢谢你的帮助.
我有一个 3D 数组,其中前两个维度是空间的,比如 (x,y)。第三维包含点特定的信息。
print H.shape # --> (200, 480, 640) spatial extents (200,480)
Run Code Online (Sandbox Code Playgroud)
现在,通过在第三维中选择某个平面,我可以显示一个图像
imdat = H[:,:,100] # shape (200, 480)
img = ax.imshow(imdat, cmap='jet',vmin=imdat.min(),vmax=imdat.max(), animated=True, aspect='equal')
Run Code Online (Sandbox Code Playgroud)
我现在想旋转立方体,以便从 (x,y) 切换到 (y,x)。
H = np.rot90(H) # could also use H.swapaxes(0,1) or H.transpose((1,0,2))
print H.shape # --> (480, 200, 640)
Run Code Online (Sandbox Code Playgroud)
现在,当我打电话时:
imdat = H[:,:,100] # shape (480,200)
img.set_data(imdat)
ax.relim()
ax.autoscale_view(tight=True)
Run Code Online (Sandbox Code Playgroud)
我得到奇怪的行为。沿行的图像将数据显示到第 200 行,然后在 y 轴 (480) 的末尾处为黑色。x 轴从 0 延伸到 200,并显示旋转后的数据。现在,再旋转 90 度,图像显示正确(当然只是旋转 180 度)
在我看来,旋转数据后,轴限制(或图像范围?)或某些内容无法正确刷新。有人可以帮忙吗?
PS:为了沉迷于糟糕的黑客攻击,我还尝试在每次旋转后重新生成一个新图像(通过调用 ax.imshow),但我仍然得到相同的行为。