使用 ESP32 Camera 进行二维码识别
1、开发环境的搭建:
这里我延用的以前的ESP32的开发板的开发环境,使用msys32开发环境,编译时我使用的是mingw32.exe,这个开发环境也挺好用的,不用再去
安装虚拟机和ubuntu,省了很多事。
2、获取代码
https://github.com/donny681/ESP32_CAMERA_QR
3、编译操作
前几天买了块ESP32-CAM的板子,今天刚好玩一下二维码的识别,代码使用卖家提供的,其实和github上下载的ESP32_CAMERA_QR,没啥区别
连线: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 编译及下载程序
随便在百度上找了个二维码生成工具,写入一串数据,生成二维码后,摄像头对着二维码,启动一下板子,即识别到右图的二维码和数据