eefocus_3977098 发表于 2026-3-16 20:38:38

【瑞萨AI挑战赛】AI人脸检测功能

在本次活动中,使用RA8P1开发板外接摄像头,不仅可以通过屏幕显示摄像头捕捉到的图像数据,这里和大家分享一下,实际的开发过程。
一:显示屏的开发过程
1.1 :RGB 屏幕的选择
本次我所使用的屏幕是正点原子的RGB TFTLCD-V1.3的 七寸屏幕,分辨率为1024*600,实物如下所示:


而且瑞萨的RA8点点taptap安卓内部寄存了高性能图形控制器模块,
RA8 系列 GLCDC (Graphics LCDController) 提供了从 MCU 内部存储器或外部图像缓存向 RGB/LCD 显示屏输出图像的能力。它集成了:

[*]帧缓冲控制:可配置多帧缓冲,实现页面切换或双缓冲显示
[*]颜色格式支持:RGB565, RGB888, ARGB8888 等
[*]图形处理功能:背景图层、文字/图形合成、透明度混合、调色板等
[*]同步信号生成:HSYNC, VSYNC, DE(Data Enable)等
[*]DMA 支持:高速数据传输,减少 CPU 占用
[*]中断功能:帧结束中断、行结束中断等
1.2:下载例程测试一下RGB的功能是否正常:
,这里为了快速开发,烧录了一个官方的RGB LVGL的驱动程序,测试屏幕的功能是正常的,

二;摄像头的知识2.1 摄像头使用过程
主要功能包括:
初始化 CEU 摄像头接口,捕获实时视频流
配置 OV5640 摄像头参数(分辨率、帧率、输出格式)
使用 RT-Thread LCD 驱动显示摄像头捕获的图像
支持图像格式转换(YUV422 → RGB565)
三: 实物测试如下:

    while(1)
    {
      rt_tick_t start = rt_tick_get();

      sensor_snapshot(&sensor, g_image_rgb565_sdram_buffer, 0);

      rgb565_to_gray_resize_192_and_quantization(g_image_rgb565_sdram_buffer, CAM_WIDTH, CAM_HEIGHT, in_i8);

      memcpy(GetModelInputPtr_serving_default_image_input_0(), in_i8, INPUT_SIZE);

      RunModel(false);

      int8_t* output1 = GetModelOutputPtr_StatefulPartitionedCall_0_70273(); // 6
      int8_t* output2 = GetModelOutputPtr_StatefulPartitionedCall_1_70283(); // 12

      dequantize_int8(output1, out_f1, output1_len, scale_out1, zero_point_out1);
      dequantize_int8(output2, out_f2, output2_len, scale_out2, zero_point_out2);

      int16_t total = 0;
      static det_box_t pool; // 6*6*3 + 12*12*3 = 108 + 432 = 540

      total += decode_output_layer(out_f1, GRID_SIZE_1, 0, LCD_WIDTH, LCD_HEIGHT, CONF_THRESH,
                pool + total, (int16_t)(sizeof(pool)/sizeof(pool)) - total);

      total += decode_output_layer(out_f2, GRID_SIZE_2, 1, LCD_WIDTH, LCD_HEIGHT, CONF_THRESH,
                pool + total, (int16_t)(sizeof(pool)/sizeof(pool)) - total);
      // nms
      int32_t kept = nms_filter(pool, total, NMS_THRESH);
      int32_t out_n = MIN(kept, MAX_BOXES); // 拷贝前 kept(不超过 MAX_BOXES)

      d2_width thickness = 1;
      uint32_t argb = 0xFF00FF00;
      lcd_draw_jpg_with_frame(0, 0, g_image_rgb565_sdram_buffer, CAM_WIDTH, CAM_HEIGHT, argb, thickness, pool, out_n);

      rt_tick_t end = rt_tick_get();
      rt_kprintf("detect box num: %d\n", out_n);
      rt_kprintf("Time elapsed: %d ms\n", (end - start) * (1000 / RT_TICK_PER_SECOND));

      rt_thread_mdelay(5);

      led_status = !led_status;
      if(led_status)
      {
            rt_pin_write(LED_PIN, PIN_HIGH);
      }
      else
      {
            rt_pin_write(LED_PIN, PIN_LOW);
      }
    }
}
这里使用摄像头随便识别一下人物的识别,可见识别的准确度很高,可以清晰的识别到书籍上面的人脸。
可见使用官方的例程进行的识别,第一次体会到AI功能的强大。

页: [1]
查看完整版本: 【瑞萨AI挑战赛】AI人脸检测功能

Baidu
map