簡體   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