【发布时间】:2016-09-25 20:08:23
【问题描述】:
奇怪的问题在于我有一个 3D 数组,其中包含名为 labelled_stack 的标签(比如说从 1 到 36)。这些只是数组中的值等于给定标签的区域。一个带有 5 个标签的快速 2D 示例如下所示:
labelled_stack = (0 0 0 0 0 0 0 0 0 0)
(0 1 1 0 0 0 2 2 2 0)
(0 1 0 0 3 0 0 2 2 0)
(0 0 0 3 3 0 0 0 0 0)
(0 4 0 0 3 0 0 0 5 0)
(0 4 0 0 0 0 5 5 5 0)
(0 0 0 0 0 0 0 0 0 0)
但想象一下它是一个 numpy 数组...
我尝试使用 cv2.imwrite 和 scipy.misc.imsave 来保存堆栈,但是当我这样做然后打开它们时,它们的值已经改变,因此值 = 5,现在等于 255,并且值等于到 1,等于 51 等。这是不可接受的。我需要这些值保持原样.. 以 1 为步长增加整数值。我知道 cv2 和 scipy.misc 都写为 8 位图像,但这不应该意味着我得到这个错误。
我什至将图像重新读回 python 以检查这是怎么回事。
我的 labelled_stack 是 np.uint32 类型
编辑以包含保存命令:for j in np.arange(0,l,1):
misc.imsave(save_path+Folder+'/Labelled/slice_{:04d}of{:}.tif'.format(j+1,l),labelled_stack[:,:,j])
或者...
cv2.imwrite(save_path+Folder+'/Labelled/slice_{:04d}of{:}.tif'.format(j+1,l),labelled_stack[:,:,j])
【问题讨论】:
-
为什么不用numpy的方法来保存numpy数组呢?
savetxt之类的东西可以处理将一个 numpy 数组输出到文件。 -
你能展示你如何调用 imwrite 吗?并且发布您输出的图像也可能很有用。
-
对不起,我应该清楚,我需要 tif 格式的图像用于下一阶段的处理。 Sunreef,您建议以什么方式发布 3D 数组?
标签: python arrays opencv numpy scipy