我正在使用mayavi.mlab生成一個網格圖,並希望背景不透明度爲0(或透明)。這可能嗎?Mayavi可以渲染具有透明背景的人物場景嗎?
6
A
回答
1
您不能直接設置透明度。但是,您可以保存與背景顏色(比前景顏色不同)圖例,並利用ImageMagick的消除背景
例如
mlab.figure(size = (1024,768),\
bgcolor = (1,1,1), fgcolor = (0.5, 0.5, 0.5))
# Your fantastic plotting script
mlab.save('pure_beauty.png')
現在使用ImageMagick的消除背景
convert pure_beauty.png -transparent white pure_transparent_beauty.png
如圖所示here。
2
如果您的目標是將mayavi圖形整合到matplotlib圖形中,這是可能的。您可以使用mlab.screenshot
來獲取RGBA值的numpy陣列,並且mlab
會將背景像素設置爲自動具有alpha 0
。然後,您可以通過imshow
將此RGBA矩陣添加到matlab圖中。示例(改編自here):
import numpy as np
from mayavi import mlab
import matplotlib.pyplot as plt
# set up some plotting params
dphi, dtheta = np.pi/250.0, np.pi/250.0
[phi, theta] = np.mgrid[0:np.pi + dphi * 1.5:dphi,
0:2 * np.pi + dtheta * 1.5:dtheta]
m0, m1, m2, m3 = 4, 3, 2, 3
m4, m5, m6, m7 = 6, 2, 6, 4
r = np.sin(m0 * phi) ** m1 + np.cos(m2 * phi) ** m3 + \
np.sin(m4 * theta) ** m5 + np.cos(m6 * theta) ** m7
x = r * np.sin(phi) * np.cos(theta)
y = r * np.cos(phi)
z = r * np.sin(phi) * np.sin(theta)
# do the meshplot
fig = mlab.figure(size=(480, 340))
mlab.mesh(x, y, z, colormap='cool', figure=fig)
imgmap = mlab.screenshot(figure=fig, mode='rgba', antialiased=True)
mlab.close(fig)
# do the matplotlib plot
fig2 = plt.figure(figsize=(7, 5))
plt.imshow(imgmap, zorder=4)
plt.plot(np.arange(0, 480), np.arange(480, 0, -1), 'r-')
plt.savefig('example.png')
您也可以只直接保存RGBA陣列使用plt.imsave(arr=imgmap, fname="foo.png")
+3
當我運行確切的代碼時,它不起作用(即mayavi圖有灰色背景而不是透明)。 –
+0
它適用於我:'mayavi'版本'4.5.0'和'matplotlib'版本'1.5.1'。 – ryanjdillon
相關問題
- 1. IE渲染背景:透明的洞?
- 2. OpenGL ES 2.0渲染到具有透明背景的紋理
- 3. 如何使用oCanvas.js渲染具有透明背景的圖像
- 4. 渲染複雜場景中的半透明物體
- 5. 是否可以渲染背景顏色的頁面=透明
- 6. UIViewAnimationTransitionCurlUp具有透明背景
- 7. 你可以使colorbox背景透明嗎?
- 8. UIWEbView透明背景:有可能嗎?
- 9. 具有透明背景的StageWebView,有可能嗎?
- 10. 透明小工具背景
- 11. OSX/Cocoa - 具有透明背景的NSScrollView
- 12. 具有透明背景的Modal UISplitViewController
- 13. 具有透明背景的DialogFragment
- 14. 具有透明背景的MSCHART
- 15. 具有透明背景的javacv圖像
- 16. PHP imagecopy的具有透明背景
- 17. 具有透明背景的RadioButtonRenderer
- 18. Div有透明背景時有iframe嗎?
- 19. 具有背景色的透明背景圖像
- 20. 透明背景
- 21. 用更快的流水線渲染mayavi場景
- 22. 漣漪上具有透明背景
- 23. 使用opengles具有透明背景
- 24. 使svg標識具有透明背景
- 25. Qt Widget具有透明背景
- 26. 使FlowLayoutPanel具有透明背景
- 27. 文本框具有透明背景
- 28. 透明背景上的文物
- 29. 透明背景渲染Internet Explorer中的白色
- 30. 爲什麼glDrawpixels不渲染我的透明背景?
你期待什麼結果文件?更確切地說,你期望用這種透明背景做什麼?您是否嘗試在某些其他背景上使用一些3D渲染對象創建圖像?或者你是否試圖讓你的窗口管理器將場景合成到其他背景上?第一種情況可能是後處理幫助。第二個肯定不是。提供更多關於你想要做什麼的細節。 – aestrivex