TLDR:如何在Julia中实现低延迟,低CPU影响的网络摄像头?
edit:我也将其发布在julia devs forum
我是朱莉娅的新手。我有兴趣处理来自已连接网络摄像头的视频提要,并希望我能从Julia中获得什么样的性能。
我正在使用Linux Ubuntu,16.04。
我发现通过video4linux获取网络摄像机输入的唯一方法是通过VideoIO,它在我的系统上运行。该视频的延迟高达4秒,是无法接受的。我认为这是由驱动程序和/或libav对帧进行缓冲(或者是ffmpeg,我不知道)给出的。使用任何具有其名称的相机API,我都应该能够访问所获取的最新相机框架...或至少设置Im从中弹出框架的队列的大小。似乎VideoIO中没有这样的选项,或者我错过了。
对我来说,能够向非技术人员展示Julia作为一种高性能的语言真的很重要,所以这种滞后将破坏我希望整合的演示。
编辑:这是我的一些代码:
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
假设上面是Julia提示符下的myViewCam.jl的内容(“ REPL”,我键入:]]
include("myViewCam.jl"); myViewCam.myView();
注意,这是对“ VideoIO.viewcam()”函数的修复,似乎无法立即使用。
在我的系统上,这使Julia线程的CPU使用率提高了约100%,在视频流开始时有大约4秒的延迟,但是随着时间的推移会逐渐平缓,直到其滞后大约0.5秒。显然有一些队列是从中弹出帧的。
TLDR:如何在Julia中实现低延迟,低CPU影响的网络摄像头?编辑:我还把这个发布在我是朱莉娅新手的julia devs论坛上。我对处理来自...
也请参见Julia中的Video4Linux包装器,该包装器可与Images.jl很好地配合使用:https://github.com/Affie/Video4Linux.jl