unity进行文字图像识别——Face++
综合文库 787 2
实名

通过了实名认证的内容创造者

发布于 2017-9-25 12:19:04

您需要 登录 才可以下载或查看,没有账号?注册

x
文字识别没那么难,因为我们有别人提供的API——————

想做一个数字的识别,就研究了一下Face++的API

首先我们需要在Face++官网注册一个用户,网址https://www.faceplusplus.com.cn/

注册完后我们就需要创建应用,以便于获取一个key值和secret值,这点是非常重要的,我们用的是试用版,正式的是需要收费的

然后找到我们的控制台,查看相应的API吧,如图所示:

015446qoogvovppz5hvvpo.png

这API里介绍的很详细,示例也很清楚。

POST的请求,请求参数和返回值这两个是关键,请求参数就是我们访问他给的网址需要传递过去的参数,返回值就是识别后返回给我们的值,这里返回识别值是Unicode编码的,这里用因为返回的是json串,所以用引入litjson,解析一下就可以输出识别出的字了。

如图是请求与返回参数:

015925lavc8twy6oe6vl86.png

这里附上代码:

  1. <div style="text-align: center;">using System.Collections;</div><div style="text-align: center;">using System.Collections.Generic;</div><div style="text-align: center;">using System.IO;</div><div style="text-align: center;">using UnityEngine;</div><div style="text-align: center;">using LitJson;</div><div style="text-align: center;">using UnityEngine.UI;</div> <div style="text-align: center;">
  2. </div><div style="text-align: center;">public class FaceTest1 : MonoBehaviour</div><div style="text-align: center;">{</div><div style="text-align: center;">    public string ImageURL = "";</div><div style="text-align: center;">    //按钮上的文本</div><div style="text-align: center;">    public Text Btn_ShibieText;</div><div style="text-align: center;">    //显示结果</div><div style="text-align: center;">    public GameObject ShowResult;</div> <div style="text-align: center;">
  3. </div><div style="text-align: center;">    // Use this for initialization</div><div style="text-align: center;">    void Start()</div><div style="text-align: center;">    {</div> <div style="text-align: center;">
  4. </div><div style="text-align: center;">    }</div> <div style="text-align: center;">
  5. </div><div style="text-align: center;">    // Update is called once per frame</div><div style="text-align: center;">    void Update()</div><div style="text-align: center;">    {</div> <div style="text-align: center;">
  6. </div><div style="text-align: center;">    }</div> <div style="text-align: center;">
  7. </div><div style="text-align: center;">    public void TestHttpSend()</div><div style="text-align: center;">    {</div><div style="text-align: center;">        //识别文字</div><div style="text-align: center;">        WWWForm form = new WWWForm();</div><div style="text-align: center;">        form.AddField("api_key", "q8QTfr-xS5hm-i25JuWRLmWQQSHRRtzy");</div><div style="text-align: center;">        form.AddField("api_secret", "3JAabNdllrl-Dm_-iYSG43B0ewypFlWt");</div><div style="text-align: center;">        form.AddField("image_url", ImageURL);</div><div style="text-align: center;">        StartCoroutine(SendPost("https://api-cn.faceplusplus.com/imagepp/v1/recognizetext", form));</div><div style="text-align: center;">    }</div><div style="text-align: center;">    //提交数据进行识别</div><div style="text-align: center;">    IEnumerator SendPost(string _url, WWWForm _wForm)</div><div style="text-align: center;">    {</div><div style="text-align: center;">        WWW postData = new WWW(_url, _wForm);</div><div style="text-align: center;">        yield return postData;</div><div style="text-align: center;">        if (postData.error != "")</div><div style="text-align: center;">        {</div><div style="text-align: center;">            Debug.Log(postData.error);</div><div style="text-align: center;">            ShowResult.SetActive(true);</div><div style="text-align: center;">            Btn_ShibieText.text = "识别";</div><div style="text-align: center;">            ShowResult.transform.Find("Text").GetComponent<Text>().text = "识别失败!";</div><div style="text-align: center;">            GameObject.Find("DebugText").GetComponent<Text>().text = postData.error;</div><div style="text-align: center;">            //myTimer = 2.0f;</div><div style="text-align: center;">        }</div><div style="text-align: center;">        else</div><div style="text-align: center;">        {</div><div style="text-align: center;">            Btn_ShibieText.text = "识别";</div><div style="text-align: center;">            Debug.Log(postData.text);</div><div style="text-align: center;">            GameObject.Find("DebugText").GetComponent<Text>().text = postData.text;</div><div style="text-align: center;">            JsonJieXi(postData.text);</div><div style="text-align: center;">        }</div><div style="text-align: center;">    }</div><div style="text-align: center;">    void JsonJieXi(string str)</div><div style="text-align: center;">    {</div><div style="text-align: center;">        JsonData jd = JsonMapper.ToObject(str);</div><div style="text-align: center;">        Debug.Log(jd["result"].Count);</div><div style="text-align: center;">        for (int i = 0; i < jd["result"].Count; i++)</div><div style="text-align: center;">        {</div><div style="text-align: center;">            for (int j = 0; j < jd["result"][i]["child-objects"].Count; j++)</div><div style="text-align: center;">            {</div><div style="text-align: center;">                Debug.Log(jd["result"][i]["child-objects"][j]["type"].ToString());</div><div style="text-align: center;">                Debug.Log(jd["result"][i]["child-objects"][j]["value"].ToString());</div><div style="text-align: center;">            }</div><div style="text-align: center;">        }</div><div style="text-align: center;">    }</div><div style="text-align: center;">     </div><div style="text-align: center;">}</div>
点击此处复制文本

然后给大家看看面板是什么样子的,如图:


评分

参与人数 3元素币 +34 活跃度 +32 展开 理由
小小橘子... + 14 + 20 QQ是不是用的这个
子桐 + 12 阅贴无数,楼主最强!
狼之独步... + 20 这很有大网气质!

查看全部评分

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
wm2zfei  发表于 2017-9-26 07:15:18  
2#
为什么我的元素币反而少掉了
回复 收起回复
使用道具
夏日初  发表于 2017-9-27 11:57:58  
3#
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表