我需要可视化一个 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 图像并对其进行进一步处理。我正在使用 32 位的 python 2.7。
请帮助
谢谢
编辑 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()
没有解决运行时错误
最后编辑:解决方案