2012-12-12 30 views
0

当我使用pylab和Python Linux下绘制和显示图像,就像在下面的例子中的位置和大小:如何改变pylab创建的图像

img = pylab.imread(filename) 
pylab.imshow(img) 
pylab.show() 
pylab.draw() 

当我这样做,一个新的窗口弹出图像。

我的问题:我如何影响位置和大小?

+1

你的子集意味着旋转图像,但是你的文本暗示着窗口的位置......? –

+0

标题固定。感谢您指出。 – Alex

+1

我还是不明白这里的问题。你想选择一个窗口的大小和位置,并让它适当地缩放到这个尺寸?如果是这样,我真的认为'pylab'不适合你的环境;你想使用一个真正的GUI框架。 – abarnert

回答

1

pylab的图像东西的全部点是,你得到一个np.array的像素数据。

所以,你可以这样做:

img = pylab.imread(filename) 
img = img * myTransformationMatrix 
pylab.imshow(img) 

如果马上告诉你,你需要知道,伟大的东西。如果您不明白矩阵乘法与旋转,平移和缩放图像有什么关系,pylab可能不是您想要使用的图像库。只需使用PIL。

如果你想操作窗口,而不是图像,pylab真的不意味着这一点。

您可能想要使用TkInter,这是Python内置的窗口库。它可能是丑陋,笨重和缓慢的,一些高级用途要么是不可能的,要么是你编写Tcl代码而不是Python ......但对于简单的东西,它不会是从pylab下降的。事实上,这就是pylab所使用的内容。

如果您开始达到TkInter的限制,现在该查看外部窗口库。您可以使用完整的GUI框架,如Gtk +,Qt或wx。与三者的Python绑定没有那么不同;最重要的区别在于,在图形用户界面的工作方式略有不同的模型中,阅读它们并选择最适合您的模型。或者,你可以使用类似pygame的东西,它可以非常简单地开窗(游戏需要的东西,而不是文字处理器)。

+0

正如你可能已经注意到的那样,这个问题的题目是不正确的。但我正要找出如何旋转图像,所以你的答案是非常感谢!因为我只想在二维平面内旋转90度左右,所以我可能不需要旋转矩阵的欧拉角... – Alex

+0

@Alex:如果您尝试更改图像本身的位置和大小,它仍然是矩阵数学。如果你想改变你桌面上的_window_的位置,那是完全不同的事情,这实际上并不是'pylab'的意图。 – abarnert

+0

是的,恐怕这是我想影响的窗口。因此提到Linux作为操作系统。 – Alex