問題描述
我有一個 3D numpy 數組,代表一個 3D 斷層圖像 I = [i,j,k].
我開始學習 kivy,因為我需要做一個簡單的 GUI,該 GUI 由一個 2D 圖像查看器組成,用于 3D (s = [i,:,:]) 圖像的每個切片和一個用于跨平面移動的切片器.
我通常通過 matplotlib 執行所有可視化,我認為最簡單的方法是將 matplotlib 連接到 kivy.我該怎么做?我看到另一個問題,它提出了類似的問題,但僅限于繪圖功能,并且該方法似乎不適用于 imshow.(
I have a 3D numpy array, representing a 3D tomographic image I = [i,j,k].
I started to learn kivy as I need to do a simple GUI consisting of a 2D image viewer for each slice of the 3D (s = [i,:,:]) image and a slicer to move across planes.
I usually perform all visualization via matplotlib and I tough that the easiest way will be to connect matplotlib to the kivy. How can I do it? I saw another question which ask a similar question, but only with the plot function, and the methodology does not seems to work for imshow. (How to get started/use matplotlib in kivy).
Any suggestions?
Thanks,
Please refer to the example for details.
Example
main.py
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread('ac013.JPG')
lum_img = img[:, :, 0]
plt.imshow(lum_img, cmap="nipy_spectral")
plt.colorbar()
class TestApp(App):
title = "Kivy Garden Matplolib & imshow()"
def build(self):
box = BoxLayout()
box.add_widget(FigureCanvasKivyAgg(plt.gcf()))
return box
if __name__ == "__main__":
TestApp().run()
Output
這篇關于Matplotlib imshow 和 kivy的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!