【问题标题】:wxImage Scale() causing image to become distortedwxImage Scale() 导致图像失真
【发布时间】:2014-06-26 20:24:20
【问题描述】:

我试图通过根据缩放值裁剪原始图像的尺寸来放大图像。我的图像是一个 RGBA numpy 数组。为了在 wxPython 中显示它,我将它转换为 wxImage,然后使用 Scale() 函数以 StaticBitmap 的正确大小显示它。问题是,在某些区域(主要是左下角和右上角附近),我的图像看起来像这样(在某些缩放“刻度”处):

而它前面的勾号(较小的缩放)看起来像这样:

如果在 numpy 数组上使用scipy.misc.imresize(),然后将其转换为 wxImage 进行显示,问题就消失了。我宁愿不这样做的原因是速度。它要慢得多,因此变焦感觉不那么流畅。我相当肯定这与Scale() 函数有关,尽管我不确定问题是什么。有什么想法吗?

【问题讨论】:

  • 您尝试过 FloatCanvas 吗?它具有内置缩放功能,可能会更好地支持此功能
  • @MikeDriscoll 我刚刚调查了一下。在浏览了一些示例并查看了一些代码之后,不幸的是,我认为这不会很有帮助。我现在缩放的方式允许以更小的增量进行缩放,并且导航更快(使用滑块或鼠标滚轮)。我还需要能够旋转,我不知道整合它需要多长时间。你知道是否可以只使用画布部分并拥有可以与缩放功能接口的我自己的导航?另外,它可以显示二维浮点数组图像(或RGB图像,我可以转换)?
  • 我不确定,虽然我认为它可以旋转图像并且它使用 NumPy,所以我认为它会很快。您应该将您的问题重新发布到 wxPython Google 组。他们那边可能有一些好主意。

标签: python image wxpython scipy wxwidgets


【解决方案1】:

如果您关心结果的质量(即,除非您只想尽快生成小缩略图),您应该使用wxImage::Scale()wxIMAGE_QUALITY_HIGH,而不是默认的wxIMAGE_QUALITY_NORMAL 质量。

如果这不能解决您看到的问题,那么看看重现问题的图像会很有趣(请在wxTrac 创建一个工单并将它们上传到那里)。

【讨论】:

  • 感谢您的建议,但我已经尝试过并且得到了相同的结果。我尝试开票,但我需要注册,当我尝试注册时出现此错误:“URLError: (-2, 'Name or service not known'”
猜你喜欢
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
相关资源
最近更新 更多