[英]How do you stream raspberry pi camera V2 footage via netcat to OpenCV C++
[英]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.