我正在实施一个分形火焰渲染器,用于踢腿和咯咯笑,并挂上了一个愚蠢的小颜色问题。运行该算法后,我得到了一个RGBA矩阵(HxWxC,特别是我有1080x1440x4),但是当我用pyplot渲染它时,得到的结果不同于我用scipy得到的结果。下面是输出代码:在scipy和pyplot中呈现RGB数据的不同呈现方式
condensed = prepare_image(condensed, **condensed_args)
condensed[np.isnan(condensed)] = 0
name += '.png' if not name.endswith('.png') else ''
sc.misc.imsave("sc_" + name, condensed, format='png')
plt.imsave("pl_" + name, condensed)
而这里的两个输出图像:
SciPy的:
Pyplot:
忽略的背景颜色(阿尔法有0,所以我可以手动处理),细节在颜色上完全不同:scipy产生平滑的cyan'ish颜色,而pyplot产生一个静态的大杂烩ra ndom颜色。如果我用pyplot.imread重新加载scipy的图像并显示它,我会得到好的青色,所以必须有pyplot解释我的原始RGBA矩阵的东西。我没有设置任何我能看到的任何颜色地图或索引。这两个imsave函数的文档似乎都表示它们的行为方式相同(并且pyplot的imshow与imsave的行为相同,应该是预期的)。
如果我不得不猜测,它看起来像pyplot将我的数据解释为HSL或其他一些色彩空间。 Scipy的一个更接近我期待的,算法应该产生什么。
有人看到我在这里做错了吗?帮助将不胜感激。