Hi, I’m in the process of writing a laser beam profiler software with Julia. Fo this I am grabbing greyscale images from a scientific camera, that can be up to 4000x3000 pixels, stored as wither UInt8 or UInt16.
I now want to show these on the screen as fast as possible. So far I have tried Plots. jl using:
using Plots, Vimba # Vimba is the camera library (will be released as a package soon) glvisualize() # this returns a closure get() that grabs the next image get, close = make_get() plt = heatmap(get()) gui(plt) # get() calls the c library using @threadcall so can be used async function myrun() while true heatmap!(plt, get()) gui(plt) end end @async myrun()
But even using glvisualize this is not super fast, definitely showing the images more slowly than my camera.
I have a rough code working in python using https://github.com/pyqtgraph/pyqtgraph which is much faster, but that uses the Qt scenegraph, so I thought glvisualize might be faster. And I would much prefer to use Julia.
So my question is: what is the fastest way to show a colormapped image of a large 2d UInt8 or UInt16 array? I’m happy to use any graphics backend necessary. (As long as compatible with 64 bit Windows 10)
I have found this discussion https://groups.google.com/d/topic/julia-users/rshpENHvHao/discussion, so could try Gtk.jl as suggested by @tim.holy but wondered if maybe GLVisualize code from @sdanisch might be better.
In the end I will also need some controls (sliders, numeric input, buttons) and also some simple line plots too.
Thanks for any help!