Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib中的翻转图像_Python_Matplotlib - Fatal编程技术网

Python matplotlib中的翻转图像

Python matplotlib中的翻转图像,python,matplotlib,Python,Matplotlib,我试图用matplotlib绘制一幅图像,结果它顺时针旋转了90度,这似乎是一个常见的问题。所以我需要将它逆时针旋转90度,以显示我的实际图像。然而,当我试图绘制数据的转置时,我收到一条错误消息,上面写着“图像数据的尺寸无效”。此外,我还试图将“原点”设置为较低,因为这似乎也是解决此类问题的一种方法,但这只会使它在x轴上翻转。我该如何解决这个问题?这是我的原始代码 from dipy.reconst.dti import color_fa cfa = color_fa(FA, tenfit.ev

我试图用matplotlib绘制一幅图像,结果它顺时针旋转了90度,这似乎是一个常见的问题。所以我需要将它逆时针旋转90度,以显示我的实际图像。然而,当我试图绘制数据的转置时,我收到一条错误消息,上面写着“图像数据的尺寸无效”。此外,我还试图将“原点”设置为较低,因为这似乎也是解决此类问题的一种方法,但这只会使它在x轴上翻转。我该如何解决这个问题?这是我的原始代码

from dipy.reconst.dti import color_fa
cfa = color_fa(FA, tenfit.evecs)
cfa_img = nib.Nifti1Image(cfa.astype(np.float32), img.get_affine())
data_cfa = cfa_img.get_data()
import matplotlib.pyplot as plt
plt.figure('color_fa')
plt.imshow(data_cfa[:,:,6,:])
plt.show()
所以它显示了图像的第6部分,是192x192

当我将imshow行更改为

plt.imshow(data_cfa[:,:,6,:].T)
我收到了那个错误信息


我不熟悉python和matplotlib,因此非常感谢您的帮助

问题在于,您正在尝试将图像转换为三维。图像的尺寸为nxmx3,您希望有一个mxnx3数组(旋转,但保持颜色平面不变)

使用
.T
方法,您将不幸地得到一个尺寸为3 x M x N的数组,这不是您想要的。这就是错误的来源

不要使用
.T
而使用
.transpose(1,0,2)
。这将转置前两个轴,但保留第三个轴不变。现在,图像应该按照您的需要进行旋转:

plt.imshow(data_cfa[:,:,6,:].transpose(1,0,2))
参见
np.transpose
的文档:


(如果您的图像是N x M灰度图像,那么
.T
技巧应该是正确的。)

问题是您正在尝试用三维转置图像。图像的尺寸为nxmx3,您希望有一个mxnx3数组(旋转,但保持颜色平面不变)

使用
.T
方法,您将不幸地得到一个尺寸为3 x M x N的数组,这不是您想要的。这就是错误的来源

不要使用
.T
而使用
.transpose(1,0,2)
。这将转置前两个轴,但保留第三个轴不变。现在,图像应该按照您的需要进行旋转:

plt.imshow(data_cfa[:,:,6,:].transpose(1,0,2))
参见
np.transpose
的文档:


(如果您的图像是N x M灰度图像,那么
.T
技巧应该是正确的。)

问题是您正在尝试用三维转置图像。图像的尺寸为nxmx3,您希望有一个mxnx3数组(旋转,但保持颜色平面不变)

使用
.T
方法,您将不幸地得到一个尺寸为3 x M x N的数组,这不是您想要的。这就是错误的来源

不要使用
.T
而使用
.transpose(1,0,2)
。这将转置前两个轴,但保留第三个轴不变。现在,图像应该按照您的需要进行旋转:

plt.imshow(data_cfa[:,:,6,:].transpose(1,0,2))
参见
np.transpose
的文档:


(如果您的图像是N x M灰度图像,那么
.T
技巧应该是正确的。)

问题是您正在尝试用三维转置图像。图像的尺寸为nxmx3,您希望有一个mxnx3数组(旋转,但保持颜色平面不变)

使用
.T
方法,您将不幸地得到一个尺寸为3 x M x N的数组,这不是您想要的。这就是错误的来源

不要使用
.T
而使用
.transpose(1,0,2)
。这将转置前两个轴,但保留第三个轴不变。现在,图像应该按照您的需要进行旋转:

plt.imshow(data_cfa[:,:,6,:].transpose(1,0,2))
参见
np.transpose
的文档:


(如果您的图像是N x M灰度图像,那么
.T
技巧应该是正确的。)

尝试
scipy.ndimage.rotate
(参见下面的示例代码)。与交换所有轴的
.T
(请参阅@DrV的答案)不同,
ndimage.rotate
的设计目的是保留颜色信息。它还可以处理任意旋转(例如31.4度)。有关更广泛的示例,请参阅


尝试
scipy.ndimage.rotate
(参见下面的示例代码)。与交换所有轴的
.T
(请参阅@DrV的答案)不同,
ndimage.rotate
的设计目的是保留颜色信息。它还可以处理任意旋转(例如31.4度)。有关更广泛的示例,请参阅


尝试
scipy.ndimage.rotate
(参见下面的示例代码)。与交换所有轴的
.T
(请参阅@DrV的答案)不同,
ndimage.rotate
的设计目的是保留颜色信息。它还可以处理任意旋转(例如31.4度)。有关更广泛的示例,请参阅


尝试
scipy.ndimage.rotate
(参见下面的示例代码)。与交换所有轴的
.T
(请参阅@DrV的答案)不同,
ndimage.rotate
的设计目的是保留颜色信息。它还可以处理任意旋转(例如31.4度)。有关更广泛的示例,请参阅


您好,这可能很好地回答了这个问题-但我们总是希望您能给出一点解释,而不仅仅是一段代码:)不要忘记,很多新手来到S/O,他们可能不理解您所做的更改或更改的原因。如果你告诉他们,他们可以从你的专业知识中学习:)嗨,这可能很好地回答了这个问题-但是一点解释总是值得的,而不仅仅是一段代码:)不要忘记,很多新手来到S/O,他们可能不明白你改变了什么或为什么。如果你告诉他们,他们可以从你的专业知识中学习:)嗨,这可能很好地回答了这个问题-但是一点解释总是值得的,而不仅仅是一段代码:)不要忘记,很多新手来到S/O,他们可能不明白你改变了什么或为什么。如果你告诉他们,他们可以从你的专业知识中学习:)嗨,这可能很好地回答了这个问题——但一点解释总是可取的