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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenMV源碼細(xì)讀

云深之無(wú)跡 ? 來(lái)源:云深之無(wú)跡 ? 作者:云深之無(wú)跡 ? 2022-10-08 10:30 ? 次閱讀

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

OpenMV初體驗(yàn)

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

OpenMV最大的賣點(diǎn)就是相對(duì)廉價(jià)的嵌入式機(jī)器視覺(jué)了,但是瓶頸其實(shí)在IO和運(yùn)算速度上面。前者就是使用PSRAM這樣的緩沖器,后面就是使用主頻高的MCU。但是一切都有盡頭,無(wú)妨,幾十塊錢

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

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

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

在下載的庫(kù)里面有很多的Bin文件,這里就是說(shuō)明文件的作用

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

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

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

這個(gè)定義的一些目錄

OMV是這個(gè)項(xiàng)目最重要的東西,一切魔法的起源,UVC是USB Video devices,CM4是ARM內(nèi)核,還有STM32AI應(yīng)用,以及下面就是一些CMOS的驅(qū)動(dòng)了,也是最重要的。

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

這個(gè)就是緩存器的一些操作函數(shù),無(wú)參數(shù)無(wú)返回的,那就是過(guò)程了

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

這個(gè)是控制CMOS的Cambus協(xié)議,要使用IIC,這里是針對(duì)STM32的

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

還有模擬的USB設(shè)備,傳輸視頻使用

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

好像是一些高級(jí)的東西

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

還有延時(shí)的封裝函數(shù)

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

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

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

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

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

這個(gè)就是我們樹(shù)莓派Pico的配置文件了

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

OMV這個(gè)文件夾就是我們OpenMV這個(gè)項(xiàng)目的精華所在了

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

這個(gè)是以字符串?dāng)?shù)組寫進(jìn)去的demo

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

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

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

通過(guò)寄存器,cambus協(xié)議和傳感器的頭文件連在一起

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

文件在這里,項(xiàng)目里面一些公用的函數(shù)封裝在這里

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

本土狗就見(jiàn)過(guò)這個(gè)傳感器

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

ov2640的一個(gè)時(shí)鐘的頻率,和對(duì)傳感器的一個(gè)初始化

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

這個(gè)是OV2640寄存器的定義

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

基本上都是宏定義了

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

傳感器的一個(gè)初始化,看下這個(gè)操作的結(jié)構(gòu)體

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

這里是傳感器的ID,在結(jié)構(gòu)體的一開(kāi)始被定義

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

camsbus就是IIC的協(xié)議,上面第一個(gè)就是寫了這個(gè)IIC的協(xié)議的地址,下面按照這個(gè)結(jié)構(gòu)體里面寫的是硬件的標(biāo)志位,至于是什么意思,這里的注釋就寫進(jìn)去了,有一些我還是看不懂的。

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

行同步信號(hào)回調(diào)+幀回調(diào)+看不懂+重啟

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

這個(gè)就是回調(diào)的一個(gè)定義,就長(zhǎng)這樣的

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

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

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

像素格式的功能開(kāi)端,一個(gè)是YUV,可變格式,顏色,動(dòng)態(tài)范圍,拜爾格式

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

這個(gè)是圖像的編碼格式

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

這個(gè)是視頻的分辨率列表

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

這個(gè)函數(shù)就吊了,具體其實(shí)定義就是這樣的

怎么起作用呢?就是通過(guò)參數(shù)的不同輸入達(dá)到一種不同的函數(shù)功能。

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

這參數(shù)設(shè)計(jì)的有Python那一套的感覺(jué)了

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

把傳感器的結(jié)構(gòu)體的使用范圍擴(kuò)展一下,以及使用2維數(shù)組來(lái)放分辨率的信息

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

下面還有一些函數(shù),初始化有兩種,一個(gè)是狀態(tài),一個(gè)是硬件

具體的實(shí)現(xiàn),先不看。

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

但是可以看一下這個(gè)初始化的函數(shù)使用

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

結(jié)構(gòu)體的值和函數(shù)的參數(shù)混在一起

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

每一個(gè)傳感器大概都是通過(guò)這樣的被定義

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

完整的傳感器結(jié)構(gòu)體定義,這里就寫的很亂了,文章寫了兩天了都

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

傳感器的各種狀態(tài),需要來(lái)輸出

代碼中大量看到Void*,有什么用? void*有什么用呢?實(shí)際上我們?cè)诤芏嘟涌谥卸紩?huì)發(fā)現(xiàn)它們的參數(shù)類型都是void*,例如:

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

因?yàn)檫@里有大量的Makefile文件,VSCode推薦這個(gè)插件

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

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

文章沒(méi)有達(dá)到自己預(yù)期的樣子,寄了,國(guó)慶完了。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    2037

    瀏覽量

    46712
  • PSRAM
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    13722
  • openMV
    +關(guān)注

    關(guān)注

    3

    文章

    39

    瀏覽量

    10230

原文標(biāo)題:OpenMV-源碼細(xì)讀.1

文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    第19.1 章-星瞳科技 OpenMV視覺(jué)循跡功能 超詳細(xì)OpenMV與STM32單片機(jī)通信

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

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

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

    openMV和STM32

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

    OpenMv和STM32通信問(wèn)題

    OpenMv和STM32通信OpenMv和STM32通信問(wèn)題OpenMv和STM32通信前言一、OpenMv配置二、Stm32配置總結(jié)前言最近一段時(shí)間都在搗鼓
    發(fā)表于 08-16 07:44

    OpenMV與TC264的相關(guān)資料推薦

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

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

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

    【瘋殼·無(wú)人機(jī)教程4】開(kāi)源編隊(duì)無(wú)人機(jī)-OPENMV 腳本燒寫

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

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

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

    STM32與openmv通信(HAL庫(kù))

    最近需要用到openmv進(jìn)行追蹤物體,所以在此做個(gè)小結(jié),其中這些文章給我很大的幫助,建議可以去看超詳細(xì)OpenMV與STM32單片機(jī)通信 以及星瞳科技官網(wǎng)實(shí)驗(yàn)?zāi)康模?b class='flag-5'>openmv追蹤物體顏色,將物體
    發(fā)表于 12-24 19:16 ?23次下載
    STM32與<b class='flag-5'>openmv</b>通信(HAL庫(kù))

    OpenMV與單片機(jī)串口通信交互

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

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

    OPENMV和STM32的識(shí)別追蹤小車(詳細(xì)版)實(shí)現(xiàn):通過(guò)OPENMV識(shí)別Apriltags標(biāo)簽,STM32驅(qū)動(dòng)小車追蹤標(biāo)簽博主通過(guò)一段時(shí)間的學(xué)習(xí),做了這個(gè)比較簡(jiǎn)單的以OPENMV為攝像傳感器
    發(fā)表于 01-13 12:05 ?0次下載
    <b class='flag-5'>OPENMV</b>和STM32的識(shí)別追蹤小車(詳細(xì)版)之<b class='flag-5'>OPENMV</b>端

    OpenMV Cam上的RPC模塊

    OpenMV Cam 上的rpc模塊允許您將 OpenMV Cam 連接到另一臺(tái)微控制器或計(jì)算機(jī),并在 OpenMV Cam 上執(zhí)行遠(yuǎn)程 Python(或過(guò)程)調(diào)用。
    的頭像 發(fā)表于 10-08 10:28 ?1653次閱讀

    OpenMV初識(shí)

    OpenMV是由美國(guó)克里斯團(tuán)隊(duì)基于MicroPython發(fā)起的開(kāi)源機(jī)器視覺(jué)項(xiàng)目,目的是創(chuàng)建低成本,可擴(kuò)展,使用python驅(qū)動(dòng)的機(jī)器視覺(jué)模塊。OpenMV搭載了MicroPython解釋器,使其可以
    的頭像 發(fā)表于 06-12 11:23 ?5023次閱讀
    <b class='flag-5'>OpenMV</b>初識(shí)

    OpenMV-AGAST算法代碼解析

    我以前研究過(guò)一段時(shí)間的OpenMV源碼,當(dāng)時(shí)的功力太淺,看不大懂,現(xiàn)在又重新的翻出來(lái)看。
    的頭像 發(fā)表于 08-07 14:19 ?2365次閱讀
    <b class='flag-5'>OpenMV</b>-AGAST算法代碼解析

    基于Vision Board上的openMV垃圾分類

    通過(guò)在Vision Board部署openMV實(shí)現(xiàn)垃圾分類。
    的頭像 發(fā)表于 06-17 10:49 ?1118次閱讀
    基于Vision Board上的<b class='flag-5'>openMV</b>垃圾分類
    主站蜘蛛池模板: 日本免费三级网站 | 激情五月综合综合久久69 | 欧美性性性性性ⅹxxbbbb | 日本黄a | 国产激情片 | 性香港xxxxx免费视频播放 | sihu免费观看在线高清 | 四虎影院观看 | 天天干狠狠干 | 国产精品无码永久免费888 | 五月天婷婷在线观看高清 | 97影院理论午夜论不卡 | 女人张腿让男桶免费视频网站 | 亚洲综合久久久 | 黄www色 | 我想看一级播放片一级的 | 色多多福利 | 四虎国产永久在线精品免费观看 | 四虎国产精品4hu永久 | 日韩免费精品视频 | 国产巨大bbbb天美 | 伊人久久大香线蕉综合亚洲 | 又大又粗又爽黄毛片 | 天天搞一搞 | 中文字幕在线观看亚洲 | 日夜操在线视频 | 日韩欧美卡通动漫在线观看 | 22eee在线播放成人免费视频 | 萌白酱一线天粉嫩喷水在线观看 | 人人爱人人爽 | 最近国语视频免费观看在线播放 | 桃花岛亚洲精品tv自拍网站 | 久久精品大全 | 国产精品美女久久久久网站 | 亚洲欧美视频一区二区三区 | 黄色免费在线网址 | 日本色婷婷 | 一级大片免费观看 | 深夜影院一级毛片 | 么公的好大好硬好深好爽在线视频 | 日韩亚洲人成网站在线播放 |