Java通過百度API實現圖片車牌號識別

本代碼功能是通過調用百度API實現的,所有你需要去百度API官網申請下你的API Key 以及Secret Key才能使用它的功能哦!

擬采用百度AI實現該功能(http://ai.baidu.com/docs#/OCR-API/5116ac95)

根據百度的文檔描述,初步明確需要的幾個參數為:
1、應用的API Key
2、應用的Secret Key
3、access_token
4、圖片數據

首先導入maven依賴

        <dependency>
            <groupId>com.baidu.aip</groupId>
            <artifactId>java-sdk</artifactId>
            <version>4.11.3</version>
        </dependency>

設置你從百度API官網拿到的秘鑰

        //設置APPID/AK/SK
        private static final String APP_ID = "填寫你的APP_ID";
        private static final String API_KEY = "填寫你的API_KEY ";
        private static final String SECRET_KEY = "填寫你的SECRET_KEY ";

下面是具體實現代碼

    /**
     *
     * @param img 圖片的字節流
     * @return number 車牌號
     */
       public static String plateLicense(byte[] img)  {
            // 初始化一個AipOcr
            AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
            // 可選:設置網絡連接參數
            client.setConnectionTimeoutInMillis(2000);
            client.setSocketTimeoutInMillis(60000);
            // 可選:設置代理服務器地址, http和socket二選一,或者均不設置
            // client.setHttpProxy("proxy_host", proxy_port);  // 設置http代理
            //client.setSocketProxy("proxy_host", proxy_port);  // 設置socket代理
            // 可選:設置log4j日志輸出格式,若不設置,則使用默認配置
            // 也可以直接通過jvm啟動參數設置此環境變量
            System.setProperty("aip.log4j.conf", ExportWordUtil.class.getResource("/").getPath() +"/log4j.properties");
            // 傳入可選參數調用接口
            HashMap<String, String> options = new HashMap<String, String>();
            options.put("multi_detect", "false");
            // 調用接口
            JSONObject res = client.plateLicense(img, options);
            try {
                System.out.println(res.toString(2));
                if(res.get("words_result") != null) {
                    String  number = res.getJSONObject("words_result").getString("number");
                    //System.out.println(number);
                    return number;
                }else{
                 //失敗打印錯誤信息
                    System.out.println(res.getString("error_msg"));
                }
            } catch (JSONException e) {
             //異常信息
                System.out.println(e.getMessage());
            }
            return null;
        }

 註意事項:
1、access_token有有效期,需要定期更換。
2、圖片大小限制(分辨率、字節數)。
後臺發起請求獲取車牌號,一張圖片從前臺傳到後臺,再調用百度API,相當於傳遞兩次,圖片太大的話會造成訪問過慢,用戶體驗不好。但是圖片過小、分辨率壓縮的過低,又會降低識別成功率。所以這裡對處理圖片的參數設置需要自己去把握,更好的平衡利弊。

到此這篇關於Java通過百度API實現圖片車牌號識別的文章就介紹到這瞭,更多相關Java 車牌號識別內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: