proba obslugi kamery w julia i python
This commit is contained in:
parent
b6909997cd
commit
e5dc2355c7
4 changed files with 144 additions and 11 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +1,4 @@
|
||||||
.CondaPkg
|
.CondaPkg
|
||||||
Manifest.toml
|
Manifest.toml
|
||||||
|
*.png
|
||||||
|
*.jpg
|
||||||
|
|
79
cam_test.jl
Normal file
79
cam_test.jl
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
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
|
60
cam_test_python.jl
Normal file
60
cam_test_python.jl
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
using CondaPkg
|
||||||
|
using PythonCall
|
||||||
|
using Images
|
||||||
|
using ImageView
|
||||||
|
import VideoIO
|
||||||
|
using GLMakie
|
||||||
|
|
||||||
|
cv2 = pyimport("cv2")
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
py2a(frame) = pyconvert(Array{Float32, 3}, frame) / 255;
|
||||||
|
py2a(frame) = PyArray(frame)
|
||||||
|
a2rgb(frame) = RGB{N0f8}.((@view frame[:, :, 3])/255 .* 1, (@view frame[:, :, 2])/255 .* 1, (@view frame[:, :, 1])/255 .* 1)
|
||||||
|
py2rgb(frame) = frame |> py2a |> a2rgb
|
||||||
|
|
||||||
|
blueth(pixel, th) = pixel.b > th ? 1.0f0 : 0.0f0
|
||||||
|
##
|
||||||
|
|
||||||
|
|
||||||
|
vid = cv2.VideoCapture(0)
|
||||||
|
vid.set(3,1920)
|
||||||
|
vid.set(4,1080)
|
||||||
|
_, img = vid.read()
|
||||||
|
a = img |> PyArray;
|
||||||
|
frame = img |> py2rgb |> GLMakie.rotr90;
|
||||||
|
image(frame)
|
||||||
|
vid.release()
|
||||||
|
|
||||||
|
##
|
||||||
|
|
||||||
|
vid = cv2.VideoCapture(0)
|
||||||
|
vid.set(3,1920)
|
||||||
|
vid.set(4,1080)
|
||||||
|
try
|
||||||
|
_, frame = vid.read()
|
||||||
|
frame = py2rgb(frame)
|
||||||
|
obs_img = GLMakie.Observable(GLMakie.rotr90(frame))
|
||||||
|
scene = GLMakie.Scene(camera=GLMakie.campixel!, size=reverse(size(frame)))
|
||||||
|
GLMakie.image!(scene, obs_img)
|
||||||
|
display(scene)
|
||||||
|
while GLMakie.isopen(scene)
|
||||||
|
_, img = vid.read()
|
||||||
|
frame = img |> py2rgb |> GLMakie.rotr90
|
||||||
|
obs_img[] = frame #blueth.(frame, 0.97)
|
||||||
|
sleep(1/9000)
|
||||||
|
end
|
||||||
|
finally
|
||||||
|
vid.release()
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
|
||||||
|
vid = cv2.VideoCapture(0)
|
||||||
|
for i = 1:100
|
||||||
|
ret, frame = vid.read()
|
||||||
|
cv2.imshow("frame", frame)
|
||||||
|
sleep(1/60)
|
||||||
|
end
|
||||||
|
vid.release()
|
14
rt.jl
14
rt.jl
|
@ -24,21 +24,13 @@ push!(world, SimpleRayTracer.Sphere(Vec3(-4.0, 0.0, 0.0), 2.0, RGB(1, 0, 0)))
|
||||||
push!(world, SimpleRayTracer.Sphere(Vec3( 4.0, 0.0, 0.0), 2.0, RGB(0, 1, 0)))
|
push!(world, SimpleRayTracer.Sphere(Vec3( 4.0, 0.0, 0.0), 2.0, RGB(0, 1, 0)))
|
||||||
push!(world, SimpleRayTracer.Sphere(Vec3( 0.0, 0.0, 3.0), 2.0, RGB(0, 0, 1)))
|
push!(world, SimpleRayTracer.Sphere(Vec3( 0.0, 0.0, 3.0), 2.0, RGB(0, 0, 1)))
|
||||||
|
|
||||||
|
|
||||||
camera = SimpleRayTracer.OrthogonalCamera(
|
|
||||||
Vec3(0.0, 0.0, -5.0),
|
|
||||||
(20.0, 10.0),
|
|
||||||
RotXYZ(0.0, 0.0, 0.0),
|
|
||||||
)
|
|
||||||
|
|
||||||
camera = SimpleRayTracer.PinHoleCamera(
|
camera = SimpleRayTracer.PinHoleCamera(
|
||||||
Vec3(0.0, 1.0, -8.0),
|
Vec3(0.0, 4.0, -8.0),
|
||||||
Vec3(0.0, 0.0, 0.0),
|
Vec3(0.0, 0.0, 0.0),
|
||||||
Vec3(0.0, 1.0, 0.0),
|
Vec3(0.0, 1.0, 0.0),
|
||||||
1.0,
|
0.005,
|
||||||
(4.0, 2.0),
|
(0.02, 0.01),
|
||||||
)
|
)
|
||||||
camera.base
|
|
||||||
|
|
||||||
resolution = (512, 256);
|
resolution = (512, 256);
|
||||||
img = SimpleRayTracer.render(world, camera, resolution);
|
img = SimpleRayTracer.render(world, camera, resolution);
|
||||||
|
|
Loading…
Reference in a new issue