[HMI/GUI] 新唐有车牌识别样例吗?

[复制链接]
1340|4
 楼主| lllook 发表于 2024-9-27 16:39 | 显示全部楼层 |阅读模式
车牌识别有一套方案最好,开发板+程序。
micoccd 发表于 2024-9-28 14:37 | 显示全部楼层
我也想要
我想看大海 发表于 2024-9-28 15:03 | 显示全部楼层
能有个资料就满足了
少女诗篇 发表于 2025-7-6 13:01 | 显示全部楼层
可以看看这个程序
基于新唐 M480 系列 MCU 实现车牌识别的基本流程,主要包含:
图像采集:通过摄像头获取原始图像
预处理:灰度化、二值化
车牌定位:从图像中提取车牌区域
字符分割与识别:采用模板匹配法识别车牌字符
结果显示:在 LCD 上显示识别结果
#include "NuMicro.h"
#include "lcd_driver.h"
#include "camera.h"
#include "image_process.h"
#include "font.h"

#define IMG_WIDTH 320
#define IMG_HEIGHT 240
#define THRESHOLD_VALUE 128
#define LICENSE_PLATE_AREA_X 80
#define LICENSE_PLATE_AREA_Y 120
#define LICENSE_PLATE_WIDTH 160
#define LICENSE_PLATE_HEIGHT 40

// 字符模板匹配函数
uint8_t match_char(uint8_t *char_img, uint8_t *template, int width, int height) {
    int match_count = 0;
    int total_pixels = width * height;
   
    for (int i = 0; i < total_pixels; i++) {
        if (char_img == template)
            match_count++;
    }
   
    return (match_count * 100) / total_pixels; // 返回匹配百分比
}

// 车牌定位与识别主函数
void license_plate_recognition(void) {
    uint8_t img_buffer[IMG_WIDTH * IMG_HEIGHT];
    uint8_t plate_buffer[LICENSE_PLATE_WIDTH * LICENSE_PLATE_HEIGHT];
    uint8_t result[8] = {0}; // 存储识别结果
   
    // 1. 初始化摄像头
    CAMERA_Init(IMG_WIDTH, IMG_HEIGHT);
   
    // 2. 初始化LCD显示
    LCD_Init();
   
    // 3. 图像采集
    CAMERA_Capture(img_buffer);
   
    // 4. 显示原始图像
    LCD_DrawImage(0, 0, IMG_WIDTH, IMG_HEIGHT, img_buffer);
   
    // 5. 图像预处理 - 灰度化(已在采集时完成)
    // 6. 二值化处理
    IMG_Threshold(img_buffer, IMG_WIDTH, IMG_HEIGHT, THRESHOLD_VALUE);
   
    // 7. 定位车牌区域
    IMG_Crop(img_buffer, plate_buffer,
             LICENSE_PLATE_AREA_X, LICENSE_PLATE_AREA_Y,
             LICENSE_PLATE_WIDTH, LICENSE_PLATE_HEIGHT);
   
    // 8. 字符分割与识别
    for (int i = 0; i < 7; i++) {
        uint8_t char_img[CHAR_WIDTH * CHAR_HEIGHT];
        int match_rate = 0;
        int best_match = 0;
        
        // 分割单个字符
        IMG_Crop(plate_buffer, char_img,
                 i * CHAR_WIDTH, 0, CHAR_WIDTH, CHAR_HEIGHT);
        
        // 模板匹配
        for (int j = 0; j < TOTAL_CHAR_TEMPLATES; j++) {
            int rate = match_char(char_img, char_templates[j], CHAR_WIDTH, CHAR_HEIGHT);
            if (rate > match_rate) {
                match_rate = rate;
                best_match = j;
            }
        }
        
        // 存储识别结果
        if (match_rate > MATCH_THRESHOLD)
            result = char_map[best_match];
        else
            result = '?';
    }
   
    // 9. 显示识别结果
    LCD_SetFont(&Font16x24);
    LCD_DrawString(10, 250, "License Plate:");
    LCD_DrawString(10, 280, (char *)result);
}

int main(void) {
    // 系统初始化
    SYS_Init();
   
    // 初始化外设
    UART_Init();
    TIMER_Init();
   
    // 启动车牌识别
    license_plate_recognition();
   
    while(1) {
        // 主循环可添加持续检测逻辑
        TIMER_Delay(TIMER0, 1000000); // 延时1秒
        license_plate_recognition();
    }
}
桃乐丝 发表于 2025-8-28 11:09 | 显示全部楼层
新唐有车牌识别样例。据其最新信息显示,其提供 TinyML 应用的范例代码,涵盖车牌识别、图像分类、手势侦测等多种功能,可助力开发者加快相关项目的开发进程。
12 篇资料
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

464

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部