ESP32+CAM 识别二维码

时间:2024-04-10 09:52:57

使用 ESP32 Camera 进行二维码识别

1、开发环境的搭建:

    这里我延用的以前的ESP32的开发板的开发环境,使用msys32开发环境,编译时我使用的是mingw32.exe,这个开发环境也挺好用的,不用再去

安装虚拟机和ubuntu,省了很多事。

2、获取代码

https://github.com/donny681/ESP32_CAMERA_QR

3、编译操作

前几天买了块ESP32-CAM的板子,今天刚好玩一下二维码的识别,代码使用卖家提供的,其实和github上下载的ESP32_CAMERA_QR,没啥区别

ESP32+CAM 识别二维码

连线:5V,GND, UnR, UOT, IO0(烧录的时候接GND,运行的时候悬空)

使用ESP32_CAMERA_QR这个代码,有点坑,它实际上是web camera类的程序,即链接路由器WIFI后,在PC端打开IP链接,

(6210) camera_demo: Open http://192.168.1.49/jpg for single image/jpg

(6210) camera_demo: Open http://192.168.1.49/jpg_stream for multipart/x-mixed-replace stream of JPEGs

上一个链接是单个的图片,下一个链接是数据流,IP地址由路由器分配,看打印出来的链接是哪个。

现实想去实现二维码的识别,就要更改程序:

1、将CAMERA_PF_JPEG 改为CAMERA_PF_GRAYSCALE,设置成灰度图片,用于QR识别。

2、#define CAMERA_FRAME_SIZE CAMERA_FS_QVGA,设置成320x240,设置大了会报一下错误。

 (4367) camera: Failed to allocate frame buffer
 (4367) camera_demo: Camera init failed with error 0x101

3、修改app_main()函数

   ...........

    camera_config.pixel_format = s_pixel_format;
    err = camera_init(&camera_config);
    if (err != ESP_OK) {
        ESP_LOGE(TAG, "Camera init failed with error 0x%x", err);
        return;
    }
    
    err = camera_run();
    if (err != ESP_OK) {
        ESP_LOGD(TAG, "Camera capture failed with error = %d", err);
        return;
    }
    app_qr_recognize(&camera_config);
    
    ESP_LOGI(TAG, "Free heap: %u", xPortGetFreeHeapSize());
    ESP_LOGI(TAG, "Camera demo ready");

4、make menuconfig选择COM口,使能QR识别等等

5、make flash 编译及下载程序

   ESP32+CAM 识别二维码

随便在百度上找了个二维码生成工具,写入一串数据,生成二维码后,摄像头对着二维码,启动一下板子,即识别到右图的二维码和数据