基于ART-Pi实现的AI图像识别

本文介绍了如何在ART-Pi上利用百度智能云平台实现图像识别功能,包括创建应用、通用图像识别、菜品识别的步骤,以及图像格式如Base64编码和百分比编码的转换流程。

2f0b5d2715983983b77e148b3018f163.png

开源地址:

https://github.com/liukangcc/ART-PI_BAIDUAI

不用自己训练模型,也能进行 AI 图像识别;借助百度云平台,我们可以在 APT-Pi 上实现图像识别功能。

创建图像识别应用

1、打开链接 百度智能云, 申请账号;

2、打开控制台

afa6057c56f1fe2214cdd6709e89f4ab.png

3、打开图像识别

aeee22722159fccbfcee73f7436d425f.png

4、创建应用

b7210f1347171000bda5df3e04656917.png

5、获取 AK 和 SK

3b170b4ba8f57176447d396cf1aeb8c3.png

通用图像识别

该请求用于通用物体及场景识别,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的多个物体及场景标签。

1、打开 image_classify.c 文件, 修改 access_token, 填入应用的 AK 和 SK;

7fd8b3926633f7f0339b2083a2c7fb67.png

2、在 SD 卡中放入要识别的图片;

3、编译下载;

4、在终端输入命令: baidu_ai cat.jpg

67c7bff9cacdb964a4bce7124fe67627.png

5、加入百度百科,使能宏定义:#define BD_AI_BAIKE,编译下载:

7e1b0cf1f7fd215e158caeba09cb970a.png

返回说明

返回参数

c87c59092c352de7d0382b3683d6a58f.png

菜品识别

该请求用于菜品识别。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的菜品名称、卡路里信息、置信度。

1、修改 URL 为菜品识别:

1    index = strlen(BAIDU_AI_API[1]);
2    post_uri_size = index;
3    post_uri = rt_malloc(256);
4
5    rt_memcpy(post_uri, BAIDU_AI_API[1], post_uri_size);

2、编译下载;

3、识别结果:

04f53380315abf94a5f7041900df984f.png

返回说明

返回参数

7206252b1af63087256f4a85aa947d08.png

监控报表

在百度服务端,可以查看 API 调用成功和失败的次数:

4c3600183237f1271d0630b1d9d3f75d.png

图像格式

图像格式转换流程:

a83151583fd86472454dc6c7278baa0e.png

1、百度 AI 支持的图像格式有:PNG、JPG、JPEG、BMP

2、原始的图片数据需要转换为 base64 编码

3、base64 编码的图片数据进行百分比编码

Base64 编码

请求图片需经过base64编码:图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

百分比编码

百分比编码 是一种拥有8位字符编码的编码机制,这些编码在URL的上下文中具有特定的含义。它有时被称为URL编码。编码由英文字母替换组成:“%” 后跟替换字符的ASCII的十六进制表示。

需要编码的特殊字符有:':','/','?','#','[',']','@','!','$','&',"'",'(',')','*','+',',',';','=',以及,'%'` 本身.其他的字符虽然可以进行编码但是不需要。

':' '/' '?' '#' '[' ']' '@' '!' '$' '&' "'" '(' ')' '*' '+' ',' ';' '=' '%' ' '
%3A %2F %3F %23 %5B %5D %40 %21 %24 %26 %27 %28 %29 %2A %2B %2C %3B %3D %25 %20 或 +
根据上下文, 空白符 ’ ’ 将会转换为 ‘+’ (必须在HTTP的POST方法中使定义 application/x-www-form-urlencoded 传输方式), 或者将会转换为 ‘%20’ 的 URL。

图像识别流程

获取 token

1   /* get token */
 2int get_ai_token(const char *uri, unsigned char *token)
 3{
 4    char *request = RT_NULL;
 5    int token_len = 0, index = 0;
 6
 7    cJSON* cjson_parse = RT_NULL;
 8    cJSON* cjson_token = RT_NULL;
 9
10    if (webclient_request(uri, RT_NULL, RT_NULL, (unsigned char **)&request) < 0)
11    {
12    &nbs
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值