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

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

感谢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));


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...