回答

收藏

[评测分享] 【瑞萨AI挑战赛】AI人脸检测功能

#板卡评测 #板卡评测 20 人阅读 | 0 人回复 | 2026-03-16

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


而且瑞萨的RA8芯片内部寄存了高性能图形控制器模块,
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)
三: 实物测试如下:

  1.     while(1)
  2.     {
  3.         rt_tick_t start = rt_tick_get();

  4.         sensor_snapshot(&sensor, g_image_rgb565_sdram_buffer, 0);

  5.         rgb565_to_gray_resize_192_and_quantization(g_image_rgb565_sdram_buffer, CAM_WIDTH, CAM_HEIGHT, in_i8);

  6.         memcpy(GetModelInputPtr_serving_default_image_input_0(), in_i8, INPUT_SIZE);

  7.         RunModel(false);

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

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

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

  14.         total += decode_output_layer(out_f1, GRID_SIZE_1, 0, LCD_WIDTH, LCD_HEIGHT, CONF_THRESH,
  15.                 pool + total, (int16_t)(sizeof(pool)/sizeof(pool[0])) - total);

  16.         total += decode_output_layer(out_f2, GRID_SIZE_2, 1, LCD_WIDTH, LCD_HEIGHT, CONF_THRESH,
  17.                 pool + total, (int16_t)(sizeof(pool)/sizeof(pool[0])) - total);
  18.         // nms
  19.         int32_t kept = nms_filter(pool, total, NMS_THRESH);
  20.         int32_t out_n = MIN(kept, MAX_BOXES); // 拷贝前 kept(不超过 MAX_BOXES)

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

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

  27.         rt_thread_mdelay(5);

  28.         led_status = !led_status;
  29.         if(led_status)
  30.         {
  31.             rt_pin_write(LED_PIN, PIN_HIGH);
  32.         }
  33.         else
  34.         {
  35.             rt_pin_write(LED_PIN, PIN_LOW);
  36.         }
  37.     }
  38. }
复制代码

这里使用摄像头随便识别一下人物的识别,可见识别的准确度很高,可以清晰的识别到书籍上面的人脸。
可见使用官方的例程进行的识别,第一次体会到AI功能的强大。

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条