我正在實施一個分形火焰渲染器,用於踢腿和咯咯笑,並掛上了一個愚蠢的小顏色問題。運行該算法後,我得到了一個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的一個更接近我期待的,算法應該產生什麼。
有人看到我在這裏做錯了嗎?幫助將不勝感激。