TLDR: Как я могу получить доступ к веб-камере с малой задержкой и низким быстродействием в Джулии?
edit: Я также разместил это на julia devs forum
Я новичок в Юлии.Я заинтересован в обработке видеопотока с подключенной веб-камеры и вижу, какую производительность я могу добиться от Джулии.
Я работаю в Linux Ubuntu, 16.04.
Единственный способЯ обнаружил, что вход для веб-камеры через video4linux, через VideoIO , который работает на моей системе.Однако видео имеет недопустимую задержку до 4 секунд.Я предполагаю, что это дается буферизацией кадров драйвером и / или libav (или это ffmpeg, я не знаю).С любой камерой api, достойной своего имени, я смогу получить доступ к последнему полученному кадру камеры ... или, по крайней мере, установить размер очереди, из которой я получаю кадры.Кажется, что нет такой опции в VideoIO, или, может быть, я ее упускаю.
Для меня действительно важно иметь возможность продемонстрировать Джулию как высокопроизводительный язык для нетехников ... так что это отставание разрушит демонстрацию, которую я надеюсь собрать.
edit: вот часть кода, который у меня есть:
module myViewCam
export myView
import VideoIO, ImageView;
function myView()
camera = VideoIO.opencamera();
buf = VideoIO.read(camera);
guidict = ImageView.imshow(buf);
while !eof(camera)
VideoIO.read!(camera, buf);
ImageView.imshow(guidict["gui"]["canvas"], buf);
sleep(0.00001);
end
end
end
Предполагается, что выше приведено содержимое myViewCam.jl в приглашении Julia («REPL»), я набираю:
include("myViewCam.jl");
myViewCam.myView();
Обратите внимание, что это исправление для функции "VideoIO.viewcam ()", которая, кажется, не работает "из коробки".
В моей системе это вызывает поток Juliaпримерно до 100% использования процессора, в начале видеопотока задержка составляет около 4 секунд, но это с течением времени выравнивается, пока не достигнет задержки примерно 0,5 секунды.Очевидно, есть какая-то очередь, откуда появляются кадры.