国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【EPS32S3學(xué)習(xí)筆記】ESP32+OPENCV+OV2640+LVGL

這篇具有很好參考價(jià)值的文章主要介紹了【EPS32S3學(xué)習(xí)筆記】ESP32+OPENCV+OV2640+LVGL。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

系列文章目錄

提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加
例如:第一章 Python 機(jī)器學(xué)習(xí)入門之pandas的使用


提示:寫完文章后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔


前言

提示:這里可以添加本文要記錄的大概內(nèi)容:

前面已經(jīng)完成了ESP32S3+LVGL+OV2640的工作,下一步就可以在這個(gè)基礎(chǔ)上去增加OPENCV的模塊了。
源代碼還是用的GitHub上的:
esp32-opencv


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、將OPENCV添加到工程

根據(jù)開源作者的描述,有三種方法。一個(gè)是直接用編譯好的庫(kù),直接使用。再一個(gè)是利用寫好的.sh文件重新編譯一下,生成庫(kù),然后使用。第三種就是所有的命令一步步來(lái)。咱們就不用多想了直接使用編譯好的庫(kù)。

Faster way:
The first way is to simply get the pre-built OpenCV library in esp32/lib/ folder, and copy it into your project (see Compiling-esp-idf-project-using-opencv)

Fast way:
The second way is by using the script in build_opencv_for_esp32.sh. This script automatically compiles OpenCV from this repository sources, and install the needed files into the desired project. It can be tweaked as needed to add and remove some parts (see esp32/doc/build_configurations.md).

The script has 2 arguments. The first is the path to the toolchain-esp32.cmake (default is $HOME/esp/esp-idf/tools/cmake/toolchain-esp32.cmake), and the second is the path where the OpenCV library is installed (default is in ./esp32/lib).

Detailed way:
The last way explains all the commands and modifications done to be able to compile and run OpenCV on the ESP32. The detailed procedure is in esp32/doc/detailed_build_procedure.md.

由于我對(duì)cmake文件這些還不了解,直接按照提供的方法,把生成的庫(kù)放到main文件夾下,修改CMakeList.txt。就可以直接編譯通過(guò)了。

二、解決 undefined reference to sysconf 錯(cuò)誤

編譯好之后,如果調(diào)用例程,就會(huì)出現(xiàn)這樣的提示。這個(gè)問(wèn)題好像是因?yàn)楂@取內(nèi)核數(shù)量的一個(gè)方法出現(xiàn)的異常,可能ESP32相關(guān)的支持還沒(méi)有完善起來(lái)。這里說(shuō)按照如下修改即可,但是查看下載后的源碼其實(shí)都已經(jīng)是修改好的,另外可能其他位置在編譯的時(shí)候也會(huì)報(bào)錯(cuò)。

parallel.cpp:949:58: undefined reference to sysconf

This error appeared while trying to use the canny() method of the imgproc module

Fix: Modify modules/core/src/parallel.cpp

Change the line 947 in

#if !defined(_WIN32) && !defined(__APPLE__) && !defined(ESP32)
unsigned ncpus = std::thread::hardware_concurrency(); /* If the value is not well defined or not computable, returns 0 */

所以簡(jiǎn)單一點(diǎn)直接將相關(guān)代碼刪除,然后返回0即可。

這樣修改完,通過(guò)上面的方法 build_opencv_for_esp32.sh可以再次編譯,然后生成新的庫(kù)文件。

三、生成新的Opencv庫(kù)文件

這里也做了一些改動(dòng),考慮到原來(lái)的庫(kù)是基于ESP32的,而且是IDF較早的版本。所以就考慮換成ESP32S3的,用最新的IDF版本,這樣跟工程更貼近一點(diǎn)。
過(guò)程比較簡(jiǎn)單:
1、復(fù)制Opencv目錄下的ESP32文件,改名字為ESP32S3;
2、 build_opencv_for_esp32.sh改名字 build_opencv_for_esp32s3.sh;
3、修改此文件的內(nèi)容:僅修改CMAKE_PATH即可,其他都不用,CMAKE里面的參數(shù)也不用了。
4、運(yùn)行這個(gè)bash文件,如果出現(xiàn)錯(cuò)誤會(huì)有提示,全部結(jié)束后在lib文件夾下就有新的庫(kù)文件了。

# path to the cmake file containing the toolchain informations
TOOLCHAIN_CMAKE_PATH=$HOME/esp/esp-idf/tools/cmake/toolchain-esp32s3.cmake

這個(gè)過(guò)程是在linux環(huán)境下進(jìn)行的,沒(méi)有搭建環(huán)境的,可以按照下面的StartGuide進(jìn)行。
docs.espressif.com

四、添加TTGO示例

需要注意的是opencv庫(kù)是C++環(huán)境下使用的,在之前工程里的c文件是不能直接使用的。當(dāng)然也可以重新將使用OPENCV的文件切換成c++的模式,不過(guò)C++早都忘差不多了,一時(shí)半會(huì)撿不起來(lái)。用老方法,做一個(gè)中間件,將其中的方法抽離出來(lái),通過(guò)接口調(diào)用。
【EPS32S3學(xué)習(xí)筆記】ESP32+OPENCV+OV2640+LVGL
main目錄下新建opencvMid文件夾,里面新增imgProcess.cpp和imgProcess.h文件。
imgProcess.cpp文件源文件如下:


#include "imgProcess.h"

#undef EPS // specreg.h defines EPS which interfere with opencv
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#define EPS 192

#define ESP32

#ifdef __cplusplus
extern "C"
{
#endif

#include "esp_system.h"
#include <esp_log.h>

#define TAG "OPENCV"


using namespace cv;


uint32_t imgProcess(int height, int width, void *pBuf, char ucMode)
{

    Mat inputImage(height, width, CV_8UC2, pBuf); // rgb565 is 2 channels of 8-bit unsigned
    static Mat imageCopy;

    if(inputImage.empty()) {
        ESP_LOGW(TAG, "Can't display empty image");
        return 0;
    }

    if (ucMode == 0)
    {

    }
    else if (ucMode == 1)
    {
        cvtColor(inputImage, inputImage, COLOR_BGR5652GRAY);
    }
    else if (ucMode == 2)
    {
        cvtColor(inputImage, inputImage, COLOR_BGR5652GRAY);
        threshold(inputImage, inputImage, 128, 255, THRESH_BINARY);
    }
    else if (ucMode == 3)
    {
        cvtColor(inputImage, inputImage, COLOR_BGR5652GRAY);
        // Reduce noise with a kernel 3x3
        blur(inputImage, inputImage, Size(3, 3));
        /** Apply the canny edges detector with:
         * - low threshold = 50
         * - high threshold = 4x low
         * - sobel kernel size = 3x3
         */
        int lowThresh = 40;
        int kernSize = 3;
        Canny(inputImage, inputImage, lowThresh, 4 * lowThresh, kernSize);
    }

    if(inputImage.type() == CV_8UC1) {         // grayscale image
        cvtColor(inputImage, imageCopy, COLOR_GRAY2BGR565, 1);
    }
    else if(inputImage.type() == CV_8UC3) {    // BGR888 image
        cvtColor(inputImage, imageCopy, COLOR_BGR2BGR565, 1);
    }
    else if(inputImage.type() == CV_8UC2) {    // BGR565 image
        inputImage.copyTo(imageCopy);
    }

    return (uint32_t)(imageCopy.ptr<uchar>(0));

}
#ifdef __cplusplus
}
#endif

這里主要是實(shí)現(xiàn)了一個(gè)接口,imgProcess,輸入?yún)?shù)為圖像的長(zhǎng)寬參數(shù),源圖像數(shù)據(jù)緩存,轉(zhuǎn)換的模式。返回的是轉(zhuǎn)換后的圖像緩存的地址。

        ESP_LOGI(TAG, "Taking picture...");
        pic = esp_camera_fb_get();

        usCounter++;  

        my_img_dsc.data = (uint8_t *)imgProcess(240,320,(void *)(pic->buf),(usCounter++ / 100) % 4);

        GucFlag = 1;

        ESP_LOGI(TAG, "Picture taken! Its size was: %zu bytes", pic->len);
        ESP_LOGI(TAG, "W: %d H:%d format:%d", pic->width,pic->height,pic->format);
        esp_camera_fb_return(pic);

這樣在camera獲取圖像之后,通過(guò)imgProcess得到轉(zhuǎn)換后得圖像數(shù)據(jù)地址,賦值給lvgl圖片變量得數(shù)據(jù)地址參數(shù)。后面圖像刷新得時(shí)候,在屏幕上就顯示新的圖像了。

ESP32S3+LVGL+OV2640+OPENCV


總結(jié)

提示:這里對(duì)文章進(jìn)行總結(jié):

感謝大家的支持。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-456425.html

到了這里,關(guān)于【EPS32S3學(xué)習(xí)筆記】ESP32+OPENCV+OV2640+LVGL的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于STM32、OV2640及ESP8266的無(wú)線圖傳

    基于STM32、OV2640及ESP8266的無(wú)線圖傳

    ????????本文利用STM32F407單片機(jī)、OV2640攝像機(jī)模塊以及ESP8266 WIFI模塊,并基于C#編寫的TCP上位機(jī)服務(wù),來(lái)實(shí)現(xiàn)圖像的無(wú)線傳輸。 ????????本文受啟發(fā)于博客:ESP8266+STM32F407+OV7670實(shí)現(xiàn)圖片傳輸,在此感謝該文作者。與該文不同的是,本文采用的攝像機(jī)模塊是0V2640,傳輸?shù)?/p>

    2024年01月18日
    瀏覽(82)
  • ESP32S3串口實(shí)驗(yàn)

    ESP32S3 一共有三個(gè) UART 通訊接口,設(shè)備號(hào)從 0~2,即 UART0,UART1,UART2。這三個(gè)串口的管腳不 是固定的,是可以重映射到任意的 IO 口的。 ESP32S3 的 BOOT 程序把 UART0 用于程序下載,LOG 輸出,我們的第一個(gè)實(shí)驗(yàn) hello world 的 LOG 就是從 UART0 輸出的。這個(gè)實(shí)驗(yàn)的 UART1 和 UART2 沒(méi)有外接

    2024年02月12日
    瀏覽(23)
  • esp32s3使用多串口

    esp32s3使用多串口

    我按照別人博客中設(shè)置串口2,串口打印有問(wèn)題,因?yàn)闆](méi)有看到esp32s3 多串口,就總結(jié)了一下自己的經(jīng)驗(yàn) 下圖為esp32的引腳圖 下圖為esp32s3的引腳圖 ESP32-S3 有三個(gè) UART(通用異步收發(fā)器)控制器,即 UART0、UART1、UART2,支持異步通信(RS232 和 RS485)和 IrDA,通信速率可達(dá)到 5 Mbps。

    2024年02月04日
    瀏覽(27)
  • ESP32S3入手體驗(yàn)測(cè)試

    ESP32S3入手體驗(yàn)測(cè)試

    ??所入手的型號(hào)是 YD-ESP32-S3 N16R8 ,該款和樂(lè)鑫官方推出的 ESP32-S3-DevKitC-1 配置差不多。 ??樂(lè)鑫官方介紹:ESP32-S3-DevKitC-1 v1.1 ??兩者采用的模組:ESP32-S3-WROOM-1 和ESP32-S3-WROOM-1U模組對(duì)比: ?? YD-ESP32-S3 和 ESP32-S3-DevKitC-1 硬件基本信息: ??核心模組配置都是可選。兩款開發(fā)板從原

    2024年02月05日
    瀏覽(50)
  • ESP32S3系列--SPI主機(jī)驅(qū)動(dòng)詳解(一)

    ESP32S3系列--SPI主機(jī)驅(qū)動(dòng)詳解(一)

    SPI是一種串行同步接口,可用于與外圍設(shè)備進(jìn)行通信。 ESP32S3自帶4個(gè)SPI外設(shè),其中SPI0/SPI1內(nèi)部專用,共用一組信號(hào)線,通過(guò)一個(gè)仲裁器訪問(wèn)外部Flash和PSRAM;SPI2/3各自使用一組獨(dú)立的信號(hào)線;開發(fā)者可以使用SPI2/3控制外部SPI從設(shè)備(Slave device);其中SPI2作為主設(shè)備有6個(gè)片選,數(shù)據(jù)

    2023年04月09日
    瀏覽(22)
  • 【ESP32S3 Sense接入百度在線語(yǔ)音識(shí)別】

    【ESP32S3 Sense接入百度在線語(yǔ)音識(shí)別】

    視頻地址: ESP32S3 Sense接入百度在線語(yǔ)音識(shí)別 目前這是我使用的ESP32S3官方硬件??????(小小的身材有大大的力量)只需要35元加攝像頭麥克風(fēng)79元,后期我會(huì)整理相關(guān)專欄進(jìn)行Arduino系統(tǒng)學(xué)習(xí)??????。有需要可以購(gòu)買xiao開發(fā)板??????,SeeedXIAO ESP32S3 Sense硬件購(gòu)買地址:

    2024年04月10日
    瀏覽(21)
  • 【ESP32S3 Sense接入語(yǔ)音識(shí)別+MiniMax模型對(duì)話】

    【ESP32S3 Sense接入語(yǔ)音識(shí)別+MiniMax模型對(duì)話】

    圍繞ESP32S3 Sense接入語(yǔ)音識(shí)別+MiniMax模型對(duì)話展開,首先串口輸入“1”字符,隨后麥克風(fēng)采集2s聲音數(shù)據(jù),對(duì)接百度在線語(yǔ)音識(shí)別,將返回文本結(jié)果丟入MiniMax模型,進(jìn)而返回第二次結(jié)果文本,實(shí)現(xiàn)語(yǔ)言對(duì)話文本效果。以上一共有兩次調(diào)用,后期只需加入tts模塊就可完整對(duì)話。

    2024年04月16日
    瀏覽(26)
  • STM32F407ZGT6控制ESP8266與OV2640下的百度智能圖片識(shí)別

    STM32F407ZGT6控制ESP8266與OV2640下的百度智能圖片識(shí)別

    前言: STM32F407ZGT6控制OV2640下采集到JPG圖片格式的二進(jìn)制數(shù)據(jù),然后對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行BASE64編碼,接著通過(guò)串口將數(shù)據(jù)傳輸給ESP8266并上傳至訓(xùn)練好的EASYDL的AI算法識(shí)別平臺(tái)進(jìn)行識(shí)別并返回垃圾種類與邊緣信息。 STM32與ov2640 ov2640簡(jiǎn)紹 stm32f407zgt6之dcmi stm32f407zgt6代碼 main.c main.h l

    2024年02月04日
    瀏覽(27)
  • ESP32S3 ADC DMA使用記錄(坑記錄)(大牛歡迎給出建議)

    目前測(cè)到三個(gè)問(wèn)題: 一、ADC DMA采樣頻率sample_freq_hz取值范圍611-83333,雖然可以達(dá)到83333,但是只能是在while循環(huán)里面不停采樣才可以,如果想要隔一段時(shí)間采樣一次則不行,假如隔一段時(shí)間使用adc_digi_read_bytes讀取40byte數(shù)據(jù),結(jié)果經(jīng)常會(huì)返回ESP_ERR_INVALID_STATE,且經(jīng)常讀取的數(shù)據(jù)

    2024年02月11日
    瀏覽(40)
  • ESP32S3使用esp-iot-solution SDK開發(fā)USBHID鼠標(biāo)鍵盤教程

    ESP32S3使用esp-iot-solution SDK開發(fā)USBHID鼠標(biāo)鍵盤教程

    ? 手里最近翻到了一個(gè)ESP32S3開發(fā)板,于是想做個(gè)鼠標(biāo)鍵盤玩玩,這是我第二次接觸ESP32,上一次18年買的吃灰板子至今沒(méi)上過(guò)電。新找到的S3看手冊(cè)是支持OTG的,按照官方的教程搭建的WSL+VSCODE環(huán)境。然而一切準(zhǔn)備就緒發(fā)現(xiàn)ESP-IDF里面沒(méi)有USB-HIDdemo。沒(méi)有demo怎么玩。于是乎查找資

    2024年02月09日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包