实时摄像机输入到Julia-lang

问题描述 投票:2回答:1

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论坛上。我对处理来自...

camera julia real-time
1个回答
0
投票

也请参见Julia中的Video4Linux包装器,该包装器可与Images.jl很好地配合使用:https://github.com/Affie/Video4Linux.jl

© www.soinside.com 2019 - 2024. All rights reserved.