繁体   English   中英

为什么在OpenCV(@ Banana Pi,Raspbian)中使用全屏窗口分辨率会减慢相机镜头的速度并使其滞后?

[英]Why does a full screen window resolution in OpenCV (@ Banana Pi, Raspbian) slow down the camera footage and let it lag?

目前,我正在一个项目上,以对摄像机进行镜像以发现盲点。 相机收到640 x 480 NTSC信号。 输出屏幕为854 x 480 NTSC。 我用EasyCAP视频采集器采集相机。 我在Banana Pi上安装了打开的cv 2.4.9。

该项目的关键点是显示器上的视频必须是实时的。 每当我评论使窗口进入全屏状态的那一行时,都会弹出一个小窗口,并且素材运行没有延迟和滞后。 但是,当我将视频设置为全屏显示时,素材会变慢并滞后。

部分代码:

namedWindow("window",0);
setWindowProperty("window",CV_WND_PROP_FULLSCREEN,CV_WINDOW_FULLSCREEN);

while(1){
        cap>>image;
        flip(image, destination,1);
        imshow("window",destination);
        waitKey(33); //delay 33 ms
    }

如何在不损失速度和帧的情况下用摄像机镜头填充屏幕? 是否可以将素材直接输出到复合输出?

问题在于,此处的缩放和绘图是在软件中完成的。 Banana Pi处理器功能不足,无法以每秒30帧的速度处理所需的吞吐量。 在我这方面是有根据的猜测,因为即使在处理和同时显示视频时,即使台式机系统也可能会遇到滞后问题。

在计算机视觉社区中,针对此问题的常见解决方案是使用OpenGL进行显示。 在这里,升级和显示被转移到图形处理器。 您可以在Banana Pi上执行相同的操作。

如果使用OpenGL支持编译了OpenCV,则可以这样尝试:

namedWindow("window", WINDOW_OPENGL);
imshow("window", destination);

请注意,如果使用OpenGL,还可以通过使用适当的模型视图矩阵来保存翻转操作。 为此,您可能需要亲自学习GL代码,而不要使用imshow。

我使用以下namedWindow("window",1);解决了整个问题: namedWindow("window",1); FLAG 1代表WINDOW_AUTOSIZE。 素材现在更加实时。 我使用的是小型监视器,因此窗口大小几乎与监视器相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM