關于廬山派多視頻層(layer)和bind_layer的應用

嘉立創分了適配層和OSD(我稱它為圖片層)顧名思義,一個是能顯示視頻流到LCD屏幕,一個是只能顯示照片,也就是你可以對不同層進行操作而不影響其他層,解決的場景就是用于你畫了一個正方形在照片上,你現在不想要了,你刪去那個正方形會導致你的拍攝圖片缺了一塊成為白色,這是因為你山區的就是那個像素點,你沒有記錄之前的像素點那就恢復不回去了,所以圖像多層可以解決因為他兩層之間毫不相關,你刪去一層里的東西?不會影響其他層,其實若果你的圖像實時更新的也可以覆蓋的層刪正方形的缺口,但是不是很保險,所以有了多層顯示

這時候又出現一個bind_layer函數?
目前這個函數好像只能綁定視頻流,圖片不能綁定但能show_images到指定層

Display.bind_layer(**sensor_bind_info, layer = Display.LAYER_VIDEO1)

詳細文章:
嘉立創廬山派K230程序加速,解決卡頓思想總結-CSDN博客

他的作用是:可以讓我正在死循環中或者延時里都能持續顯示圖像,相當于多了一個線程
bind_layer函數通過硬件 DMA 或操作系統任務調度實現了視頻的異步顯示,使主線程能夠在死循環或延時中繼續執行其他任務,而視頻顯示不受影響。這是嵌入式系統中處理實時性任務(如視頻、音頻)的常見設計模式,本質上是利用硬件或系統的并行能力,而非真正的多線程。理解這一機制有助于優化系統資源,避免因主線程阻塞導致的顯示卡頓。

所以如果你綁定視頻流到lcd display,那以后你除非想要擁有拍攝的照片用來做某些分析操作的時候才需要調用sensor.snapshot 你顯示函數也是只需要你想把你操作完的結果顯示在lcd上時才調用show_image 其他情況下你都可以不用用它兩就能實時顯示圖像到lcd了且不懼怕任何中斷延時死循環還節省軟件資源因為用了dma完全由硬件接管


實際案例:
1.將圖像通道零的視頻流綁定到lcd的display去
他這個綁定好象只能綁定小于RGB888大小的eg:RGB565?YUV420不然會報錯太大



創建OSD圖像:

然后在while中snapshot拍攝攝像頭圖像(也就是提取綁定好的視頻流中的一幀)去完成一些視覺檢測山的算法

最后將結果保留在IMAGE OSD照片上最后將照片顯示在OSD層蓋住綁定視頻流顯示在LCD上


這樣你對照片的操作就不會影響到視頻的顯示而且完全不怕延時死循環
詳細解釋:

一、綁定視頻流與 DMA 硬件接管的核心機制
當通過bind_layer將視頻流綁定到 LCD 顯示時,系統會利用DMA(直接內存訪問)機制建立硬件級的數據傳輸通道,實現以下效果:

數據傳輸與顯示的硬件化:
攝像頭采集的視頻數據通過 DMA 直接從傳感器緩沖區傳輸到 LCD 顯存,無需 CPU 干預。
顯示控制器(如 LCD 驅動 IC)周期性讀取顯存數據并刷新屏幕,形成持續的視頻流顯示。
與sensor.snapshot()和show_image()的本質區別:
snapshot():主動捕獲一幀圖像(軟件觸發),需 CPU 參與數據讀取。
show_image():將處理后的圖像數據寫入顯存(軟件控制),需 CPU 占用時間。
綁定 + DMA 模式:數據傳輸由硬件自動循環執行,CPU 僅需在初始化時配置參數,后續完全脫離顯示流程。


二、為何無需調用snapshot和show_image即可實時顯示?
傳統顯示流程的局限性:
plaintext
軟件調用snapshot() → CPU讀取圖像數據 → 軟件處理圖像 → 調用show_image() → CPU寫入顯存 → 顯示刷新 ?

每幀顯示都需 CPU 全程參與,若 CPU 陷入死循環或延時,顯示會卡頓。
DMA 綁定后的流程優化:
plaintext
初始化bind_layer() → DMA自動建立「攝像頭緩沖區→LCD顯存」傳輸通道 → 顯示控制器周期性刷新顯存 ?

關鍵變化:CPU 僅在初始化時配置 DMA 參數(如源地址、目標地址、傳輸大小),后續每幀數據的傳輸和顯示由硬件自動完成,與 CPU 狀態無關(即使 CPU 進入死循環,DMA 仍持續工作)。


三、DMA 接管的優勢與適用場景
資源節省與實時性提升:
CPU 占用率降低:傳統方案中 CPU 需處理每幀圖像的讀取和寫入,而 DMA 模式下 CPU 可專注于其他任務(如算法處理、通信控制)。
抗干擾能力強:中斷、延時、死循環等軟件層面的阻塞不會影響 DMA 傳輸,確保顯示流暢(例如,在處理傳感器數據的同時,LCD 仍實時顯示視頻)。
適用場景:
實時監控系統:需持續顯示攝像頭畫面,同時 CPU 處理報警邏輯、數據上傳等任務。
資源受限的嵌入式設備:如單片機(STM32、ESP32),需在有限 RAM 和 CPU 算力下實現視頻顯示。
低功耗應用:DMA 傳輸功耗遠低于 CPU 參與的數據搬運,適合電池供電設備。


四、何時仍需調用snapshot和show_image?
需要處理單幀圖像時:
例如,抓拍照片用于 AI 分析(如人臉識別、物體檢測),此時需用snapshot()獲取特定時刻的圖像數據。
顯示非實時內容時:
如顯示 UI 界面、處理后的圖像(如添加文字標注、濾鏡效果),需用show_image()將軟件處理后的結果寫入顯存。
多圖層混合顯示:
若需在視頻流上疊加菜單、數據圖表等 UI 元素,通常需要:
視頻流通過 DMA 綁定到底層顯示層(如 LAYER_VIDEO)。
UI 元素通過show_image()繪制到頂層顯示層(如 LAYER_UI),實現圖層疊加。
五、總結:DMA 綁定的技術本質
通過bind_layer實現的實時顯示,本質是將「軟件驅動顯示」轉換為「硬件驅動顯示」:

傳統方案:軟件是顯示的 “主動執行者”(調用函數控制每一步)。
DMA 方案:軟件僅作為 “配置者”(初始化綁定參數),硬件成為顯示的 “主動執行者”(DMA + 顯示控制器自動循環)。

這種模式充分利用了硬件并行處理能力,在嵌入式系統中是平衡性能、功耗和開發效率的優選方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86731.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多傳感器標定簡介

目錄 標定內容及方法 雷達內參標定 IMU內參標定 編碼器內參標定 相機內參標定 雷達和相機外參標定 多雷達外參標定 手眼標定 融合中標定 總結 連續時間 標定內容及方法 雷達內參標定 1) 目的 由于安裝原因,線束之間的夾角和設計不一致,會導致…

day46/60

浙大疏錦行 DAY 46 通道注意力(SE注意力) 知識點回顧: 不同CNN層的特征圖:不同通道的特征圖什么是注意力:注意力家族,類似于動物園,都是不同的模塊,好不好試了才知道。通道注意力:模型的定義和插…

提升創作效率:輕松調用固定素材與模板

日常工作和生活中,我們經常需要復制粘貼不同類型的數據,如文本、圖片、文件等。使用剪切板管理工具可以快速訪問之前復制的內容,而無需反復切換應用進行復制操作。 這款綠色便攜版應用,無需安裝,雙擊即開,…

【C++】組合模式

目錄 一、模式核心概念與結構二、C 實現示例:文件系統三、組合模式的關鍵特性四、應用場景五、組合模式與其他設計模式的關系六、C 標準庫中的組合模式應用七、優缺點分析八、實戰案例:圖形編輯器九、實現注意事項如果這篇文章對你有所幫助,渴…

C++包管理工具:conan2持續集成 (CI) 教程

1.持續集成 (CI) ? 這是一個高級主題,需要具備 Conan 的基礎知識。請先閱讀并練習用戶教程。本節面向設計和實施涉及 Conan 包的生產 CI 管道的 DevOps 和構建工程師。如果不是這種情況,您可以跳過本節。 持續集成 (CI) 對不同用戶和組織有不同的含義…

免費SSL證書一鍵申請與自動續期

免費SSL證書申請與自動續期教程 本文介紹如何通過樂此加密(www.letsencrypt.top) 實現免費SSL證書一鍵配置和自動續期 一、準備工作 服務器要求 Linux 系統(推薦 Ubuntu/CentOS)已安裝 curl 和 crontab擁有 sudo 權限的用戶 域名驗證 確保域…

【NLP】自然語言項目設計

目錄 項目簡介 要求 需要考慮的問題 硬件需求和環境配置 n卡驅動配置 以cuda11.8 版本為例 下載對應的cudnn(version11) 安裝GPU版本的torch 安裝gpu版本的TensorFlow 檢查cuda安裝情況 項目簡介 訓練一個模型,實現歌詞仿寫生成 任務類型:文本…

設計模式:觀察者模式 (Observer) 案例詳解

目錄 一、引言:為什么需要觀察者模式? 二、觀察者模式的核心原理 1. 角色劃分 2. 類圖關系 三、經典案例解析 案例1:天氣監測系統 案例2:股票價格監控系統 案例3:MVC架構中的模型-視圖分離 案例4:J…

CTF-Misc:開啟全方位解題之旅

目錄 一、CTF-Misc 入門指引二、基礎技能儲備2.1 文件格式識別2.2 基礎工具使用 三、信息搜集技巧3.1 搜索引擎技巧3.2 網絡信息挖掘 四、編碼轉換奧秘4.1 常見編碼類型4.2 編碼轉換工具 五、隱寫分析秘籍5.1 圖片隱寫5.1.1 LSB 隱寫5.1.2 顏色通道與 Exif 信息5.1.3 圖片修復與…

Adobe創意套件深度挖掘:效率倍增與靈感迸發的新玩法

最近在深入體驗奧地利Blueskyy藝術學院的Adobe正版教育訂閱,并研究全家桶時有不少新發現,忍不住想和大家分享一下。 先簡單說下這個訂閱的感受: Firefly 積分。 這應該是我用過Firefly積分最多的版本,1500點/周。對于我們這些創意…

左神算法之有序二維矩陣中的目標值查找

有序二維矩陣中的目標值查找 目錄 有序二維矩陣中的目標值查找1. 題目描述2. 問題解釋3. 解決思路方法一:逐行二分查找(適合行數較少的情況)方法二:利用行列有序特性(最優解) 4. 代碼實現5. 總結 1. 題目描…

深入理解AVL樹及其旋轉操作

AVL樹的概念 二叉搜索樹雖可以縮短查找的效率,但如果數據有序或接近有序二叉搜索樹將退化為單枝樹,查找元素相當于在順序表中搜索元素,效率低下。因此,兩位俄羅斯的數學家G.M.Adelson-Velskii和E.M.Landis在1962年發明了一種方法…

URL帶有中文會引入哪些問題

處理含中文字符的 URL 1 為什么會出現“亂碼”或崩潰? URL 標準(RFC 3986)規定:除少數保留字符外,URL 只能包含 ASCII。中文屬于 Unicode,因此必須先轉換。如果直接把 https://example.com/路徑/ 這樣的字…

結構體字段能否單獨加 mut

你問的這個問題在 Rust 里很常見: 一、結構體字段能否單獨加 mut 1. 結構體字段能否單獨加 mut? 不能。Rust 中,mut 是用來修飾變量綁定的,可變性是綁定的屬性,而不是結構體字段本身的屬性。 你不能寫: …

scGPT-spatial 復現

文章目錄 ? 總體流程總覽(從 H5AD 到模型訓練)🔧 步驟 1:讀取 H5AD 文件并做基礎預處理🧱 步驟 2:構造訓練樣本輸入(token、value)📦 步驟 3:使用 DataColla…

運放電壓跟隨器為什么要加電阻

運放電壓跟隨器為什么要加電阻 我們常見運放的電壓跟隨器如下: 有時候會看見電路中加兩個電阻: 作用就是保護運放,起限流電阻的作用。 當輸入電壓高的時候,運放內部存在鉗位二極管,此電阻就能限流。 并不是所有運放…

MinerU 2.0部署

簡介 MinerU 2.0使用sglang加速,與之前差別較大,建議按照官方的Docker鏡像的方式啟動。 Docker鏡像 Dockerfile 這是官方的Dockerfile # Use the official sglang image FROM lmsysorg/sglang:v0.4.7-cu124# install mineru latest RUN python3 -m …

黑馬python(十七)

目錄: 1.數據可視化-地圖-基礎案例 2.全國疫情地圖 3.河南省疫情地圖繪制 4.基礎柱狀圖構建 5.基礎時間線柱狀圖繪制 6.動態GDP柱狀圖繪制 1.數據可視化-地圖-基礎案例 圖示有點對的不準,可以通過后面的參數 2.全國疫情地圖 3.河南省疫情地圖繪制…

Segment Anything in High Quality之SAM-HQ論文閱讀

摘要 最近的 Segment Anything Model(SAM)在擴展分割模型規模方面取得了重大突破,具備強大的零樣本能力和靈活的提示機制。盡管 SAM 在訓練時使用了 11 億個掩碼,其掩碼預測質量在許多情況下仍不理想,尤其是對于結構復雜的目標。我們提出了 HQ-SAM,使 SAM 能夠精確地分割…

深入理解_FreeRTOS的內部實現(2)

1.事件組 事件組結構體: 事件組 “不關中斷” 的核心邏輯 事件組操作時,優先選擇 “關調度器” 而非 “關中斷” ,原因和實現如下: 關調度器(而非關中斷) FreeRTOS 提供 taskENTER_CRITICAL()(…