调用百度api车牌识别本地图片中的号码

By admin at 2017-12-29 • 0人收藏 • 1450人看过

感谢xauto和aardio作者一鹤写的baidu的api库

http://bbs.aardio.com/forum.php?mod=viewthread&tid=22093&extra=page%3D1

首先建立库

baidu.aardio文件

import web.rest.jsonLiteClient;

namespace baidu;

class client{
    ctor(apiKey,secretKey){
        
        this = ..web.rest.jsonLiteClient()
        this.apiKey = apiKey;
        this.secretKey = secretKey;

        this.oauthApi = this.api("https://aip.baidubce.com/oauth/2.0/","GET");
    };
    auth = function(){ 
        var result,err = this.oauthApi.token({
            grant_type = "client_credentials";
            client_id = this.apiKey;
            client_secret =  this.secretKey;
        }); 
        if(!result[["access_token"]]) return null,"认证失败";
        
        this.oauthInfo = result;
        this.extraUrlParameters = {
            access_token = result.access_token;
        }
        return this.oauthInfo;
    }
    
}

然后主界面上代码如下:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=759;bottom=469;acceptfiles=1)
mainForm.add(
button={cls="button";text="button";left=31;top=409;right=735;bottom=465;z=1};
edit={cls="edit";left=38;top=15;right=734;bottom=53;edge=1;z=2};
edit2={cls="edit";left=38;top=68;right=734;bottom=392;edge=1;multiline=1;z=3}
)
/*}}*/

var filePath;
mainForm.wndproc = function(hwnd,message,wParam,lParam){
	select( message ) { 
		case 0x233/*_WM_DROPFILES*/{
                        filePath = win.getDropFile(wParam )[1];
                        mainForm.edit.text = filePath;
                }
		else{
			
		}
	}

}

import string.base64;
import inet.url;
mainForm.button.oncommand = function(id,event){
    
	import baidu;
	//创建百度客户端
	var http = baidu.client(
    	"8FzUXXXXXXXxxxxxxXXXdn89l",//你自己的API Key
    	"GGXLXXXXXXXXXXXXXXXxxxxxXXXXXXXXGxM" //你自己的Secret Key
	) 
	
	
	
	//oauth认证
	if(! http.auth() ){
    	error("认证失败")
	}
    	
	//车牌识别接口
	var ocr = http.api("https://aip.baidubce.com/rest/2.0/ocr/v1/");
	
	//调用ocr
	var result = ocr.license_plate( 
    	image = inet.url.encodeUri(string.base64.encode(string.load(filePath)));
	)
	
	mainForm.edit2.print(result ,'\r\n' )
}



mainForm.enableDpiScaling();
mainForm.show();

return win.loopMessage();

拖拽含有车牌号的图片到窗口, 然后点识别即可. 耐心等待识别完成

blob.png


2 个回复 | 最后更新于 2017-12-29
2017-12-29   #1

如果要识别图片中有好几个车牌号,那么增加一个属性即可.

但,切记两个属性的话用{}括起来才可以.

//调用ocr
    var result = ocr.license_plate({ 
        image = inet.url.encodeUri(string.base64.encode(string.load(filePath)));
        multi_detect = true;
        }
    )

blob.png

2017-12-29   #2

以上代码经xauto提点,可以精简

image = crypt.bin.encodeBase64(string.load(filePath));


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...