我有這個需求:我想複製視頻圖像的選定部分(它們是來自飛行模擬器的儀表或其他儀器)並將它們複製到小型LCD顯示器上。每個液晶顯示器必須物理複製一臺儀器,從而從源圖像中選擇一個區域。 我打算使用python,但也可能使用其他語言。但是我對圖形沒有任何經驗,我不知道如何從視頻板內存中讀取原始圖像。很多年前,使用EGA和VGA卡時,即使我從未有過這種需求,也很容易。現在我讀到了Windows鎖定了任何直接訪問視頻內存的嘗試。這是真的嗎?如果是的話,該怎麼做? 我打算使用集成視頻板。 感謝您的關注視頻內存拷貝
視頻內存拷貝
回答
根據您的整體解決方案,您可能更容易將整個視頻發送到每個小屏幕,並簡單地縮放/裁剪回放以僅顯示所需的部分。
這在帶寬方面效率較低(可能 - 取決於如何壓縮您提取的任何視頻),但避免了必須執行任何處理器和電池耗盡的複雜視頻操作。
如果你的系統是基於Android可以使用TextureView的setTransform做到這一點:https://developer.android.com/reference/android/view/TextureView.html#setTransform(android.graphics.Matrix)
在HTML5中,你可以使用CSS和視頻實現了類似的事情變換:https://www.w3schools.com/cssref/css3_pr_transform.asp
感謝您的回答。目標系統將是一個簡單的液晶顯示器加上一個Arduino或樹莓板,沒有電池問題。帶寬可能是一個問題。但我會考慮你的建議,再次感謝。 – Salrandazzo
遵循您的建議,我可以將整個模擬圖像(視頻)流式傳輸,並且每個遠程設備都可以抓住它的一部分,與儀器顯示相關的部分。我可以在發送端使用python + OpenCV。並且仍然不知道接收端是什麼,取決於設備(Arduino或Raspberry)。 – Salrandazzo
- 1. cudaMemcpy2D共享內存拷貝
- 2. 內存對齊和長拷貝
- 3. CodeMirror拷貝保存樣式
- 4. 默認固定內存與零拷貝內存
- 5. 硬拷貝vs淺拷貝javascript
- 6. 淺拷貝和深拷貝在C
- 7. C++類拷貝(指針拷貝)
- 8. 淺拷貝和深拷貝示例
- 9. FFmpeg的-c拷貝中刪除視頻,幾秒鐘
- 10. 使用硬拷貝分發的視頻的DRM
- 11. 拷貝目錄
- 12. Javascript淺拷貝
- 13. 淺拷貝
- 14. 拷貝數據
- 15. 列拷貝和
- 16. 深拷貝
- 17. 爲什麼懶的拷貝時我們有深拷貝和淺拷貝?
- 18. Java ArrayList的拷貝構造函數是淺拷貝還是深拷貝?
- 19. 拷貝內容與特定標準
- 20. QImage拷貝寫入
- 21. iPhone拷貝文件
- 22. 深拷貝(鏈表)
- 23. 拷貝文件到
- 24. 拷貝目錄VC++
- 25. 結構深拷貝
- 26. JDO拷貝對象
- 27. 深拷貝ASP.NET GridView
- 28. DPDK mbuf深拷貝
- 29. 將非託管內存拷貝到託管字節數組
- 30. 從c傳遞片段給golang做內存拷貝?
你提到的Windows ...你可以使用winapi直接在內存中以位圖的形式呈現屏幕內容。在OpenGL中,存在舊的'glReadPixels'或者使用'FBO'或者渲染位圖,但是這涉及到篡改渲染代碼,如果你可以或不可以做到則渲染代碼不清楚。您沒有指定視頻源(圖像/視頻文件,來自某些第三方App,IPC,LAN的真實視頻源?)您沒有指定平臺(gfx訪問與平臺緊密相關) – Spektre
您是對的。來源是一個飛行模擬器,這樣圖像就像一個視頻。操作系統取決於用戶,我將從我自己的應用程序開始,即Win10。目的是將選定的飛行模擬部分(即樂器)轉移到許多不同的設備上,每一個設備都由一個小觸摸屏和一個像Arduino或Raspberry這樣的電路板組成。該板將在LCD上顯示所選儀器的部分(想象一下指南針或雷達),觸摸部分將用於向儀器發送儀器相關命令。 – Salrandazzo
因此,我認爲你不能篡改應用程序代碼...使用winapi ...獲取應用程序的句柄(或整個桌面),並在一段時間內將畫布內容複製到應用程序中...對於樂器,不需要這樣做與太大的FPS ...看到[獲取運行OpenGL的子窗口的截圖(Windows)](https://stackoverflow.com/a/18107834/2521214) – Spektre