当前位置: 首页 > 面试题库 >

有没有一种方法可以将pyplot.imshow()对象转换为numpy数组?

卞成荫
2023-03-14
问题内容

我需要可视化2D numpy数组。我为此使用pyplot。这是代码:

import cv2 as cv
import numpy as np
from matplotlib import pyplot

img = pyplot.imshow( radiance_val )
#radiance_val is a 2D numpy array of size = ( 512, 512 ) 
#filled with np.float32 values

pyplot.show()

我得到预期的输出。

现在我的问题是,有什么方法可以将上述代码中的“
img”从pyplot类型转换为numpy类型。我需要这样做,以便可以将可视化文件加载为opencv图像并对其进行进一步处理。我正在使用python
2.7,32位。

请帮助

谢谢

编辑1:在Thorsten Kranz解决方案之后

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
import PIL
from cStringIO import StringIO

frame1 = plt.gca()
frame1.axes.get_xaxis().set_visible(False)
frame1.axes.get_yaxis().set_visible(False)
plt.imshow(np.random.random((10,10)))

buffer_ = StringIO()
plt.savefig( buffer_, format = "png", bbox_inches = 'tight', pad_inches = 0 )
buffer_.seek(0)

image = PIL.Image.open( buffer_ )

ar = np.asarray(image)
cv.imshow( 'a', ar )
cv.waitKey(0)
cv.destroyAllWindows()

程序终止后,我从MS VC ++运行时库中收到运行时错误。我更好的猜测是,这是因为打开了“ buffer_”。但是我正在获得所需的输出。

编辑2:使用关闭缓冲区

buffer_.close()

没有解决运行时错误


问题答案:

除非您确实需要标记刻度,否则,

im._rgba_cache

使您可以直接访问numpy作为颜色映射数据的MxNx4数组。

如果您只想要颜色映射的数据,则可以imshow完全通过直接对自己的数据进行颜色映射(请参见选择颜色映射的指南)

my_cm = maplotlib.cm.get_cmap('Reds')
normed_data = (data - np.min(data)) / (np.max(data) - np.min(data))
mapped_data = my_cm(normed_data)

这将为您提供映射到0和之间的MxNx4数组1

mapped_datau8 = (255 * my_cm(normed_data)).astype('uint8')

要么

mapped_data = my_cm(normed_data, bytes=True)

会将其转换为无符号整数。

matplotlib包括一系列规范化代码,请参见此处。

get_cmapdoc和colormap画廊



 类似资料:
  • 问题内容: 我需要转换成,成等。 有没有办法用库或类或其他东西做到这一点? 问题答案: 此代码的大部分是设置数字单词dict,仅在第一次调用时才完成。

  • 问题内容: 我正在尝试将字符串转换为。我不是在尝试解析主机名:字符串是ipv4地址。有工作吗?还是我必须手动解析它? 问题答案: 这样做更好,因为无论传递什么字符串,它都不会进行DNS查找。

  • 问题内容: 在PHP中,有没有一种简单的方法可以将数字转换为单词?举例来说, 27 到 27 。 问题答案: 我在网上找到了一些(2007/2008)源代码,它具有版权,但是我可以自由使用它,并根据需要对其进行修改,因此将其放在此处并在CC-Wiki下重新许可:

  • 问题内容: 这是我的数据库: 我有Student.class: 我从firebase datasnapshot读取信息,如下所示: 这样做时,我会得到名称和年龄,但是我的问题是,是否有一种方法可以在不添加任何字符串的情况下在Student类上存储ID(pushKey),而String将保留该字符串并在firebase数据库中使用另一个字段。 谢谢你们。 问题答案: 我更喜欢将键和值分开,否则传递s

  • 问题内容: 有很多示例可以使用jQuery在javascript/dom中实现某些功能。但是,使用jQuery并非总是一种选择,它会使理解jQuery编写的javascript解决方案的示例变得困难。 有没有一种简单的方法可以将jQuery代码转换为常规javascript?我猜不必访问或理解jQuery源代码。 问题答案: 最简单的方法是仅学习如何使用普通的DOM api进行DOM遍历和操作(您

  • 在Python中,我有一个像下面这样的长线: 然后我试着把它改成下面的格式。然而,它不再像预期的那样工作了: 我知道Python使用缩进的语法,所以可能这种格式不会工作也许?或者如果有的话,有正确的方法在Python中格式化它吗?