在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenMV源碼細讀

云深之無跡 ? 來源:云深之無跡 ? 作者:云深之無跡 ? 2022-10-08 10:30 ? 次閱讀

最近在看OpenMV的源碼,和往前一樣,經常會卡住,還是對C不夠了解,一知半解的,這些文章不以讀源碼為主,但是會寫一下我日常不見的東西。

OpenMV初體驗

2a41c2f2-461d-11ed-96c9-dac502259ad0.png

OpenMV最大的賣點就是相對廉價的嵌入式機器視覺了,但是瓶頸其實在IO和運算速度上面。前者就是使用PSRAM這樣的緩沖器,后面就是使用主頻高的MCU。但是一切都有盡頭,無妨,幾十塊錢

2a6e8d1e-461d-11ed-96c9-dac502259ad0.png

目前官方支持得板子是這些得,別的芯片需要移植

2aa2b72e-461d-11ed-96c9-dac502259ad0.png

在下載的庫里面有很多的Bin文件,這里就是說明文件的作用

2acbe392-461d-11ed-96c9-dac502259ad0.png

這個是makefile文件里面定義要用的編譯器

2b549c00-461d-11ed-96c9-dac502259ad0.png

這個定義的一些目錄

OMV是這個項目最重要的東西,一切魔法的起源,UVC是USB Video devices,CM4是ARM內核,還有STM32AI應用,以及下面就是一些CMOS的驅動了,也是最重要的。

2b7bb1dc-461d-11ed-96c9-dac502259ad0.png

這個就是緩存器的一些操作函數,無參數無返回的,那就是過程了

2ba9df76-461d-11ed-96c9-dac502259ad0.png

這個是控制CMOS的Cambus協議,要使用IIC,這里是針對STM32的

2bec4b18-461d-11ed-96c9-dac502259ad0.png

還有模擬的USB設備,傳輸視頻使用

2c12284c-461d-11ed-96c9-dac502259ad0.png

好像是一些高級的東西

2c9f8002-461d-11ed-96c9-dac502259ad0.png

還有延時的封裝函數

2cde0930-461d-11ed-96c9-dac502259ad0.png

STM32的片子最少都是F4的片子了

2d1edc76-461d-11ed-96c9-dac502259ad0.png

UVC在OpenMV里面是一個占比很大的部分,我為此寫了一篇沒有寫完的文章。

2d446b3a-461d-11ed-96c9-dac502259ad0.png

這個就是我們樹莓派Pico的配置文件了

2d626c98-461d-11ed-96c9-dac502259ad0.png

OMV這個文件夾就是我們OpenMV這個項目的精華所在了

2d8a7580-461d-11ed-96c9-dac502259ad0.png

這個是以字符串數組寫進去的demo

2e31fe4a-461d-11ed-96c9-dac502259ad0.png

這些都是支持的傳感器,在傳感器這個目錄里面,后期擴展的話,可以按照樣式自己適配自己的傳感器。

2e8dfcd6-461d-11ed-96c9-dac502259ad0.png

通過寄存器,cambus協議和傳感器的頭文件連在一起

2eb03350-461d-11ed-96c9-dac502259ad0.png

文件在這里,項目里面一些公用的函數封裝在這里

2ed3261c-461d-11ed-96c9-dac502259ad0.png

本土狗就見過這個傳感器

2ef76b8a-461d-11ed-96c9-dac502259ad0.png

ov2640的一個時鐘的頻率,和對傳感器的一個初始化

2f342a5c-461d-11ed-96c9-dac502259ad0.png

這個是OV2640寄存器的定義

2f588348-461d-11ed-96c9-dac502259ad0.png

基本上都是宏定義了

2fd15188-461d-11ed-96c9-dac502259ad0.png

傳感器的一個初始化,看下這個操作的結構體

302967ba-461d-11ed-96c9-dac502259ad0.png

這里是傳感器的ID,在結構體的一開始被定義

304b681a-461d-11ed-96c9-dac502259ad0.png

camsbus就是IIC的協議,上面第一個就是寫了這個IIC的協議的地址,下面按照這個結構體里面寫的是硬件的標志位,至于是什么意思,這里的注釋就寫進去了,有一些我還是看不懂的。

30d2e880-461d-11ed-96c9-dac502259ad0.png

行同步信號回調+幀回調+看不懂+重啟

313d586e-461d-11ed-96c9-dac502259ad0.png

這個就是回調的一個定義,就長這樣的

316b4d32-461d-11ed-96c9-dac502259ad0.png

私有的話,這里就是高和低我也不懂是哪里的

318a446c-461d-11ed-96c9-dac502259ad0.png

像素格式的功能開端,一個是YUV,可變格式,顏色,動態范圍,拜爾格式

31ce8140-461d-11ed-96c9-dac502259ad0.png

這個是圖像的編碼格式

32216fe0-461d-11ed-96c9-dac502259ad0.png

這個是視頻的分辨率列表

325da082-461d-11ed-96c9-dac502259ad0.png

這個函數就吊了,具體其實定義就是這樣的

怎么起作用呢?就是通過參數的不同輸入達到一種不同的函數功能。

328c284e-461d-11ed-96c9-dac502259ad0.png

這參數設計的有Python那一套的感覺了

32b0d374-461d-11ed-96c9-dac502259ad0.png

把傳感器的結構體的使用范圍擴展一下,以及使用2維數組來放分辨率的信息

32d131f0-461d-11ed-96c9-dac502259ad0.png

下面還有一些函數,初始化有兩種,一個是狀態,一個是硬件

具體的實現,先不看。

339cfd94-461d-11ed-96c9-dac502259ad0.png

但是可以看一下這個初始化的函數使用

341d5d2c-461d-11ed-96c9-dac502259ad0.png

結構體的值和函數的參數混在一起

344c28e6-461d-11ed-96c9-dac502259ad0.png

每一個傳感器大概都是通過這樣的被定義

348a696c-461d-11ed-96c9-dac502259ad0.png

完整的傳感器結構體定義,這里就寫的很亂了,文章寫了兩天了都

34ac17b0-461d-11ed-96c9-dac502259ad0.png

傳感器的各種狀態,需要來輸出

代碼中大量看到Void*,有什么用? void*有什么用呢?實際上我們在很多接口中都會發現它們的參數類型都是void*,例如:

ssize_t read(int fd, void *buf, size_t count); 
void *memcpy(void *dest, const void *src, size_t n);
為何要如此設計?因為對于這種通用型接口,你不知道用戶的數據類型是什么,但是你必須能夠處理用戶的各種類型數據,因而會使用void*。void*能包容地接受各種類型的指針。也就是說,如果你期望接口能夠接受任何類型的參數,你可以使用void*類型。但是在具體使用的時候,你必須轉換為具體的指針類型。例如,你傳入接口的是int*,那么你在使用的時候就應該按照int*使用。

因為這里有大量的Makefile文件,VSCode推薦這個插件

351ce206-461d-11ed-96c9-dac502259ad0.png

這么貴的x1c連個win11都不能裝,笑死了

文章沒有達到自己預期的樣子,寄了,國慶完了。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 緩沖器
    +關注

    關注

    6

    文章

    2023

    瀏覽量

    46291
  • PSRAM
    +關注

    關注

    0

    文章

    35

    瀏覽量

    13620
  • openMV
    +關注

    關注

    3

    文章

    39

    瀏覽量

    10130

原文標題:OpenMV-源碼細讀.1

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    第19.1 章-星瞳科技 OpenMV視覺循跡功能 超詳細OpenMV與STM32單片機通信

    第19.1 章-[星瞳科技]OpenMV視覺循跡功能 超詳細OpenMV與STM32單片機通信 (有完整版源碼) 【星曈科技】OpenMv筆記——利用
    的頭像 發表于 08-20 11:41 ?1403次閱讀
    第19.1 章-星瞳科技 <b class='flag-5'>OpenMV</b>視覺循跡功能 超詳細<b class='flag-5'>OpenMV</b>與STM32單片機通信

    COCOFLY 教程 ——瘋殼無人機·系列快速·快速上手【3】OPENMV腳本燒寫

    ,具體步驟如下:(1)打開openmv die,如下圖所示。(2)打開提供的python源碼,直接把mvCtrl.py拖到openmv die中即可。中途可能會出現要求更新,激活等,無需理會 點“否”。(3
    發表于 03-26 11:55

    openMV和STM32

    。攝像頭采用星瞳openMV H7,主控采用的是正點原子探索者F407開發板。本文通過openMV和STM32兩方面來講解。openMV部分OpenMV攝像頭是一款小巧,低功耗,低成本
    發表于 08-04 06:20

    OpenMv和STM32通信問題

    OpenMv和STM32通信OpenMv和STM32通信問題OpenMv和STM32通信前言一、OpenMv配置二、Stm32配置總結前言最近一段時間都在搗鼓
    發表于 08-16 07:44

    OpenMV與TC264的相關資料推薦

    器件:OpenMVMM32單片機一、采用串口通信串口通信想必大家都知道,這里就不多贅述了,如果有不了解的可以看我的往期文章【STM32】HAL庫 CubeMX例程三—串口中斷通信(2)(附工程源碼
    發表于 02-22 08:01

    OpenMV是什么?openmv4的作用有哪些

    OpenMV是什么?openmv4的作用有哪些?
    發表于 02-22 06:40

    【瘋殼·無人機教程4】開源編隊無人機-OPENMV 腳本燒寫

    )打開 openmv die,如下圖所示。圖2 (2)打開提供的 python 源碼,直接把 mvCtrl.py 拖到 openmv die 中即可。圖3圖4 中途可能會出現要求更新,激活等,無需理會
    發表于 08-22 15:43

    【星曈科技】OpenMv筆記——利用OpenMV與STM32進行串口通信

    利用OpenMV與STM32進行串口通信OpenMV端的程序# Untitled - By: dell - 周一 7月 19 2021# Blob Detection and uart
    發表于 12-24 18:51 ?27次下載
    【星曈科技】<b class='flag-5'>OpenMv</b>筆記——利用<b class='flag-5'>OpenMV</b>與STM32進行串口通信

    STM32與openmv通信(HAL庫)

    最近需要用到openmv進行追蹤物體,所以在此做個小結,其中這些文章給我很大的幫助,建議可以去看超詳細OpenMV與STM32單片機通信 以及星瞳科技官網實驗目的:openmv追蹤物體顏色,將物體
    發表于 12-24 19:16 ?23次下載
    STM32與<b class='flag-5'>openmv</b>通信(HAL庫)

    OpenMV與單片機串口通信交互

    器件:OpenMVMM32單片機一、采用串口通信串口通信想必大家都知道,這里就不多贅述了,如果有不了解的可以看我的往期文章【STM32】HAL庫 CubeMX例程三—串口中斷通信(2)(附工程源碼
    發表于 12-27 19:21 ?20次下載
    <b class='flag-5'>OpenMV</b>與單片機串口通信交互

    OPENMV和STM32的識別追蹤小車(詳細版)之OPENMV

    OPENMV和STM32的識別追蹤小車(詳細版)實現:通過OPENMV識別Apriltags標簽,STM32驅動小車追蹤標簽博主通過一段時間的學習,做了這個比較簡單的以OPENMV為攝像傳感器
    發表于 01-13 12:05 ?0次下載
    <b class='flag-5'>OPENMV</b>和STM32的識別追蹤小車(詳細版)之<b class='flag-5'>OPENMV</b>端

    OpenMV Cam上的RPC模塊

    OpenMV Cam 上的rpc模塊允許您將 OpenMV Cam 連接到另一臺微控制器或計算機,并在 OpenMV Cam 上執行遠程 Python(或過程)調用。
    的頭像 發表于 10-08 10:28 ?1591次閱讀

    OpenMV初識

    OpenMV是由美國克里斯團隊基于MicroPython發起的開源機器視覺項目,目的是創建低成本,可擴展,使用python驅動的機器視覺模塊。OpenMV搭載了MicroPython解釋器,使其可以
    的頭像 發表于 06-12 11:23 ?4645次閱讀
    <b class='flag-5'>OpenMV</b>初識

    OpenMV-AGAST算法代碼解析

    我以前研究過一段時間的OpenMV源碼,當時的功力太淺,看不大懂,現在又重新的翻出來看。
    的頭像 發表于 08-07 14:19 ?2168次閱讀
    <b class='flag-5'>OpenMV</b>-AGAST算法代碼解析

    基于Vision Board上的openMV垃圾分類

    通過在Vision Board部署openMV實現垃圾分類。
    的頭像 發表于 06-17 10:49 ?924次閱讀
    基于Vision Board上的<b class='flag-5'>openMV</b>垃圾分類
    主站蜘蛛池模板: 一级毛片日韩 | 国产欧美精品午夜在线播放 | 国产一级aaa全黄毛片 | 久久精品99 | 人人澡人人澡碰人人看软件 | 美女扒开内裤无遮挡禁18 | 久优草| 超级香蕉97视频在线观看一区 | www午夜| 痴女在线播放免费视频 | 日本不卡视频免费 | 色www亚洲国产张柏芝 | 婷婷毛片| 都市禁忌猎艳风流美妇 | 蜜月mv国产精品 | 手机午夜看片 | 国产成人永久免费视频 | 五月综合激情网 | 色天天天天 | 国产伦精品一区二区三区免 | 男女爱爱是免费看 | 天天操夜夜添 | 亚洲理论在线观看 | 天天操天天摸天天爽 | 男女交性视频播放 视频 视频 | 男男宿舍高h炒肉bl 男男污肉高h坐便器调教 | 天天干天天夜 | 亚洲专区一路线二 | 欲色视频| 国产成人教育视频在线观看 | 日韩福利网站 | aa亚洲| 日本资源在线观看 | 国产精品五月天 | 夜夜穞狠狠穞 | 欧美女同在线 | japanese日本护士xx亚洲 | 亚洲日本三级 | 国产哺乳期奶水avav | 男人操女人免费视频 | 成人99|