using CondaPkg using PythonCall using Images using ImageView import VideoIO using GLMakie ## VideoIO.TestVideos.available() videoFile = VideoIO.TestVideos.testvideo("black_hole") VideoIO.playvideo(videoFile) close(videoFile) ## cam = VideoIO.opencamera("/dev/video0") img = read(cam) # @show VideoIO.framerate(cam) # cam |> close try img = read(cam) obs_img = GLMakie.Observable(GLMakie.rotr90(img)) scene = GLMakie.Scene(camera=GLMakie.campixel!, resolution=reverse(size(img))) GLMakie.image!(scene, obs_img) display(scene) fps = VideoIO.framerate(cam) while GLMakie.isopen(scene) img = read(cam) obs_img[] = GLMakie.rotr90(img) sleep(1 / fps) end finally close(cam) end ## cam = VideoIO.opencamera("/dev/video0") imgstack = [] secrec = 1 frames = 30*secrec framecounter = 0 fps = VideoIO.framerate(cam) try # read the first image in start img = read(cam) obs_img = GLMakie.Observable(GLMakie.rotr90(img)) scene = GLMakie.Scene(camera=GLMakie.campixel!, size=reverse(size(img))) # set the first image on screen of Makie window GLMakie.image!(scene, obs_img) # display the GLMakie scene display(scene) # until the window is open i = 0 while GLMakie.isopen(scene) # read from camera img = read(cam) # we can process our image here # you should comment below 4 lines if don't wanna save # img = process(img) # push!(imgstack, img) # framecounter = framecounter + 1 # if(framecounter == frames) break end # update image in the window # obs_img[] = GLMakie.rotr90(img) # delay to achieve right framerate # also when you don't delay, it ends up hanging everything as # it's a while loop with no control and huge number of reads. sleep(1e-6) end finally close(cam) end