WT-ESP32_CAM获取图片

这个代码是获取图像的,图像的属性在camera_config 这个里面设置(图片大小以及特性(灰度图?RGB565等等)),然后大家可以在串口里面看到我们拍摄的图片的大小,但是看不到实际的图片,下一篇我...

这个代码是获取图像的,图像的属性在camera_config 这个里面设置(图片大小以及特性(灰度图?RGB565等等)),然后大家可以在串口里面看到我们拍摄的图片的大小,但是看不到实际的图片,下一篇我会教大家用他的SD卡存储将我们的图片存储到SD卡上,大家就能直观看到了,或者在IDE 的例程里面找到ESP32那一栏,第二个硬件驱动例程分文件夹里面有一个CAMERA的web输出例程,是官方的例程,运行之后串口会打印出一个局域网内的访问地址,大家就可以在这个地址里面查看了,但是只能局域网内哈,比如连接的同一个wifi,你要是拿手机流量访问肯定是不行的。

//#include "SSD1306.h"

#include "esp_camera.h"

#include "2_TFT_SPI.h"

//SSD1306 display(0x3c, 15, 14); // sda:15,scl:14

#define PWDN_GPIO_NUM 32 #define RESET_GPIO_NUM -1

#define XCLK_GPIO_NUM 0

#define SIOD_GPIO_NUM 26

#define SIOC_GPIO_NUM 27

#define Y9_GPIO_NUM 35

#define Y8_GPIO_NUM 34

#define Y7_GPIO_NUM 39

#define Y6_GPIO_NUM 36

#define Y5_GPIO_NUM 21

#define Y4_GPIO_NUM 19

#define Y3_GPIO_NUM 18

#define Y2_GPIO_NUM 5

#define VSYNC_GPIO_NUM 25

#define HREF_GPIO_NUM 23

#define PCLK_GPIO_NUM 22

static camera_config_t camera_config = {

.pin_pwdn = PWDN_GPIO_NUM,

.pin_reset = RESET_GPIO_NUM,

.pin_xclk = XCLK_GPIO_NUM,

.pin_sscb_sda = SIOD_GPIO_NUM,

.pin_sscb_scl = SIOC_GPIO_NUM,

.pin_d7 = Y9_GPIO_NUM,

.pin_d6 = Y8_GPIO_NUM,

.pin_d5 = Y7_GPIO_NUM,

.pin_d4 = Y6_GPIO_NUM,

.pin_d3 = Y5_GPIO_NUM,

.pin_d2 = Y4_GPIO_NUM,

.pin_d1 = Y3_GPIO_NUM,

.pin_d0 = Y2_GPIO_NUM,

.pin_vsync = VSYNC_GPIO_NUM,

.pin_href = HREF_GPIO_NUM,

.pin_pclk = PCLK_GPIO_NUM,

//XCLK 20MHz or 10MHz for OV2640 double FPS (Experimental)

.xclk_freq_hz = 20000000,

.ledc_timer = LEDC_TIMER_0,

.ledc_channel = LEDC_CHANNEL_0,

.pixel_format = PIXFORMAT_RGB565,//YUV422,GRAYSCALE,RGB565,JPEG

.frame_size = FRAMESIZE_QQVGA,//QQVGA-QXGA Do not use sizes above QVGA when not JPEG

.jpeg_quality = 12, //0-63 lower number means higher quality

.fb_count = 1 //if more than one, i2s runs in continuous mode. Use only with JPEG };

esp_err_t camera_init(){ //initialize the camera esp_err_t err = esp_camera_init(&camera_config); if (err != ESP_OK) { Serial.print("Camera Init Failed"); return err; } return ESP_OK; }

void show_image(const uint8_t *image) { showimage(image, 120, 160, 0, 0); }

esp_err_t camera_capture(){ uint8_t * buf = NULL; size_t buf_len = 0;

//acquire a frame camera_fb_t * fb = esp_camera_fb_get(); if (!fb) { Serial.print("Camera Capture Failed"); return ESP_FAIL; }

//bool converted = frame2bmp(fb, &buf, &buf_len); //for(int i = 0;i < fb->len;i++) //{ //Serial.print(fb->buf[i], HEX); // Serial.print(" "); //} //Serial.println(); Serial.println(fb->len); Serial.println(fb->buf[0]);

//show_image(fb->buf); //这是我之前的那个LCD的驱动,用这个显示,但是显示效果不好,图像干扰很大,但是能看出来图片是获取到了的,下一篇会教大家使用SD卡模块存储,就能直观看到图片了

esp_camera_fb_return(fb); return ESP_OK; }

void setup() { Serial.begin(115200);

//lcd_io_set(14,15,13,12,2,0); //LCD_Init(); //LCD_Clear(GREEN);

camera_init(); //摄像头初始化 camera_capture(); //摄像头获取图像

Serial.println("sys is running"); }

void loop() { camera_capture(); }
这个代码是获取图像的,图像的属性在camera_config 这个里面设置(图片大小以及特性(灰度图?RGB565等等)),然后大家可以在串口里面看到我们拍摄的图片的大小,但是看不到实际的图片,下一篇我...

  • 发表于 2020-09-23 10:47
  • 阅读 ( 93 )

0 条评论

请先 登录 后评论
淡若清风
淡若清风

35 篇文章

作家榜 »

  1. 淡若清风 35 文章
  2. 杨杨 2 文章
  3. 51FLY 0 文章
  4. 胡小虎 0 文章
  5. seaky 0 文章
  6. 15139236712 0 文章
  7. selectcc 0 文章
  8. 温志亮 0 文章