人工智能OCR識別平臺翔云等介紹及編程實(shí)現(xiàn)調(diào)庫人臉識別_第1頁
人工智能OCR識別平臺翔云等介紹及編程實(shí)現(xiàn)調(diào)庫人臉識別_第2頁
人工智能OCR識別平臺翔云等介紹及編程實(shí)現(xiàn)調(diào)庫人臉識別_第3頁
人工智能OCR識別平臺翔云等介紹及編程實(shí)現(xiàn)調(diào)庫人臉識別_第4頁
人工智能OCR識別平臺翔云等介紹及編程實(shí)現(xiàn)調(diào)庫人臉識別_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

??智能OCR識別平臺翔云等介紹及編程實(shí)現(xiàn)調(diào)庫?臉識別師承陳???錄README本篇章是學(xué)習(xí)過程的記錄,為問題導(dǎo)向?式(即通過出現(xiàn)問題引導(dǎo)?步步解決)。這樣雖然是?煩了點(diǎn),但是對知識,對可能出現(xiàn)的錯(cuò)誤的理解會提??個(gè)檔次。要有前?篇章的基礎(chǔ),不然就不知道在說啥了:注意:這?使?的平臺是Ubuntu,樹莓派的?定要跟著這篇?章來,不然等著折騰吧:為什么要學(xué)會調(diào)庫?百度搜索OCR識別,可以發(fā)現(xiàn)有很多??都在做這個(gè)項(xiàng)?,?如百度OCR,騰訊OCR,科?訊飛OCR等等。國內(nèi)中?型公司,甚?是?公司在做項(xiàng)?時(shí)希望能夠快速占領(lǐng)市場,?如?臉識別,車牌識別需要?常穩(wěn)定的算法,如果需要本公司研發(fā)部的研發(fā)?員去做,可能要包含兩個(gè)碩??個(gè)博?還有?個(gè)本科??同做研發(fā),?產(chǎn)周期以及穩(wěn)定性都是?臨了巨?的挑戰(zhàn)。這時(shí)候,購買別?已經(jīng)做好的?案,是?常劃算的。有個(gè)很好的例?,oppo?機(jī)vivo?機(jī),未來要上5G,就得和華為合作,就是類似的原理。不是說他們搞不出來5G來,給他們時(shí)間肯定也搞得出來,但搞出來的時(shí)候已經(jīng)晚了。下?通過??智能OCR識別平臺的使?,掌握調(diào)庫調(diào)API開發(fā)的?般步驟,其他的平臺也基本類似。OCR識別平臺翔云導(dǎo)讀注冊登錄先看到【價(jià)格與購買】在【產(chǎn)品】,看看??臉識別的API?檔再看到【開發(fā)者中?】點(diǎn)擊圖標(biāo)下載看看能提供什么樣?的案例讀?下這個(gè)C++?例代碼讀取?檔,捕捉類似這樣的關(guān)鍵信息,?般注釋都寫得很清楚1strPostData.Format(_T("img=%s&key=%s&secret=%s&typeId=%d&format=xml"),strImageBase64,strKey,strSecret,nTypeID);雖然是C++寫的,到最后也可以?C語?做出來來看看java的代碼java?多直接調(diào)庫,?常簡潔,這也是它開發(fā)效率?的原因之?。在【個(gè)?中?】可以看到??的OCRkey和密碼,這兩句在代碼中肯定要?上來訪問OCR平臺。購買?臉識別體驗(yàn)版吧。編程實(shí)現(xiàn)調(diào)庫?臉識別調(diào)試程序:打通OCR后臺第?版調(diào)試,最終程序是?步步改進(jìn)得來的,想看最終程序的建議跳轉(zhuǎn)。程序?意:測試打通OCR后臺,查看后臺返回的數(shù)據(jù)12#include<stdio.h>#include<curl/curl.h>#include<string.h>#include<stdlib.h>3456typedefunsignedintbool;//數(shù)據(jù)類型別名?typedef7#definetrue1#definefalse0//宏定義?define8910111213141516171819202122232425262728293031323334353637383940414243444546474849505152//回調(diào)函數(shù),讀取從OCR后臺返回的數(shù)據(jù)size_treadData(void*ptr,size_tsize,size_tnmemb,void*stream){charbuf[1024]={'\0'};strncpy(buf,ptr,1024);printf("===========getdata===========\n");printf("%s\n",buf);}boolpostUrl(){//根據(jù)?檔,接?調(diào)??法為post請求CURL*curl;CURLcoderes;char*postString;//分開定義,然后字符串拼接char*img1=NULL;char*img2=NULL;char*key="xxx";char*secret="xxx";inttypeId=21;char*format="xml";postString=(char*)malloc(strlen(key)+strlen(secret)+2048);sprintf(postString,"img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s","","",key,secret,typeId,format);curl=curl_easy_init();if(curl){curl_easy_setopt(curl,CURLOPT_COOKIEFILE,"/tmp/cookie.txt");//指定cookie?件curl_easy_setopt(curl,CURLOPT_POSTFIELDS,postString);//指定post內(nèi)容curl_easy_setopt(curl,CURLOPT_URL,"/api/faceliu.do");//指定urlcurl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,readData);//回調(diào)函數(shù)讀取返回值res=curl_easy_perform(curl);printf("OK:%d\n",res);curl_easy_cleanup(curl);}returntrue;}intmain(void){postUrl();}編譯:1gccOCR.c-I./curl-7.71.1/_install/include/-L./curl-7.71.1/_install/lib/-lcurl運(yùn)?結(jié)果:1ok:1證明失敗了,沒有跟翔云的后臺接通,回調(diào)函數(shù)沒有打印后臺返回來的數(shù)據(jù)。(1)編譯libcul庫?持SSL那是因?yàn)樵诰幾glincul庫的時(shí)候,沒有選擇?持SSL。./configure--with-ssl我們訪問的接?是https開頭的,要進(jìn)??份驗(yàn)證和數(shù)據(jù)加密的,體現(xiàn)在我們的key和secret。HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)?加密傳輸、?份認(rèn)證的?絡(luò)協(xié)議所以要重新編譯,讓我們編譯出來的libcurl?持SSL.回憶之前l(fā)ibcurl的INSTALL.md那我們就要回到/curl-7.71.1路徑下,刪除rm_install-rf上次編譯出來的?件夾,重新編譯?持SSL的庫。由/docs/INSTALL.md我們可以得知要想?持SSL,就得./configure--with-ssl。所以我們要這樣配置1./configure--prefix=$PWD/_install--with-ssl編譯錯(cuò)誤,12chekingforSSL_connectin-lssl...(cached)nonoconfigure:error:openSSLlibsand/ordirectorieswerenotfoundwherespecified!(2)linux系統(tǒng)安裝SSL依賴庫:開源?具wget想要?持SSL必須要有依賴庫,需要系統(tǒng)中已經(jīng)安裝好了SSL。我們需要安裝openSSL.tar但是搜索的到的都是要錢的,如何免費(fèi)下載呢?利?linux的開源?具下載:wget是Linux中的?個(gè)下載?件的?具,wget是在Linux下開發(fā)的開放源代碼的軟件。百度搜索技巧:wgetopenSSL.tar找到類似于這樣:回到curl?件夾的上?級?錄,執(zhí)?命令(即安裝在curl?件夾外?)1wget/source/openssl-1.1.1a.tar.gz注意:?坑,這個(gè)a在Ubuntu可以?,但是在樹莓派不?,總是報(bào)錯(cuò)表?他鏈接不到庫,煩死了!!最好是在下?這個(gè)?站下載openssl-1.1.1j.tar.gz1/source/解壓1tarxvfopenssl-1.1.1a.tar.gz進(jìn)??件夾,直接去看他的INSTALL。為了避免到時(shí)候編譯這個(gè)curl?要去配置SSL這個(gè)庫,我們直接把SSL安裝到默認(rèn)的系統(tǒng)位置去,所以不指定安裝路徑了,直接在/openssl-1.1.1a路徑下,配置1./config編譯(起碼編譯了8,9分鐘)1make安裝:1sudomakeinstall要加sudo因?yàn)榭隙ò惭b在了usr/local中,??作?錄?權(quán)限(3)curl庫重新進(jìn)?配置,編譯,安裝回到/curl?錄下重新進(jìn)?配置:111./configure--prefix=$PWD/_install--with-sslmakemakeinstall(4)重新編譯?臉識別的?件,這次我們已經(jīng)開啟了SSL1gccOCR.c-I./curl-7.71.1/_install/include/-L./curl-7.71.1/_install/lib/-lcurl在樹莓派上編譯的時(shí)候?定要多鏈接兩個(gè)庫-lssl-lcrypto否則會報(bào)錯(cuò):1234./curl-7.71.1/_install/lib//libcurl.so:undefinedreferenceto`SSL_CTX_set_keylog_callback@OPENSSL_1_1_1'./curl-7.71.1/_install/lib//libcurl.so:undefinedreferenceto`SSL_CTX_set_post_handshake_auth@OPENSSL_1_1_1'./curl-7.71.1/_install/lib//libcurl.so:undefinedreferenceto`SSL_CTX_set_ciphersuites@OPENSSL_1_1_1'collect2:error:ldreturned1exitstatus運(yùn)?可以看到已經(jīng)收到了翔云后臺的反饋:123===========getdata===========<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><data><message><status>-7</status><value>必傳參數(shù)為空</value></message></dataOK:23必傳參數(shù)為空的原因是:代碼中沒有傳?圖?給它識別(5)修改代碼:把圖?的base64流作為參數(shù)傳?Base64是?絡(luò)上最常見的?于傳輸8Bit字節(jié)碼的編碼?式之?,可?于在HTTP環(huán)境下傳遞較長的標(biāo)識信息。在Linux下?成圖?的base64編碼1base64photo.jpg?致思路:(尚未進(jìn)?封裝)12system("base64zhu1.jpg>tmpFile1");//把編碼的結(jié)果保存到tmpFile1中3intfdPic1=open("./tmpFile1",O_RDWR);//創(chuàng)建?件保存編碼intfileLenPic1=lseek(fdPic1,0,SEEK_END);//45lseek(fdPic1,0,SEEK_SET);//?件指針回頭67char*bufPic1=(char*)malloc(fileLenPic1+8);memset(bufPic1,'\0',fileLenPic1+8);8910111213read(fdPic1,bufPic1,fileLenPic1);//把?件內(nèi)容度進(jìn)取buf中//做個(gè)簡單的測試//printf("%s\n",buf);close(fdPic1);AAAAAAAAAAAAAAAA如果平臺返回的數(shù)據(jù)死活提?你傳參錯(cuò)誤:當(dāng)你打開tmpFile1想看看編碼的結(jié)果,如果后?出現(xiàn)很長很??段的這個(gè),成千上萬的AAAAAAAAAAAAA,我想你應(yīng)該跟我?樣,直接?機(jī)拍???張圖?就扔進(jìn)去了。查看圖?的??,往往是4~5個(gè)M,?常??。∫膊环掀脚_的要求。轉(zhuǎn)化成??點(diǎn)的這些AAAAA就消失了。怎樣快速壓縮圖??????QQ給圖?截圖,保存的時(shí)候轉(zhuǎn)換為jpg格式,?般能夠直接壓縮到50多個(gè)K,?常好?。最終程序:識別成功程序?意:向OCR后臺傳?兩張圖?的base64流,后臺經(jīng)過判斷返回?cái)?shù)據(jù),程序接收數(shù)據(jù)并判斷是否含有“是”,若有,則輸出?臉識別結(jié)果為“同?個(gè)?”。12#include<stdio.h>#include<curl/curl.h>#include<string.h>#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>345678#include<unistd.h>910111213141516171819202122232425262728293031323334353637383940414243444546474849typedefunsignedintbool;//數(shù)據(jù)類型別名?typedef#definetrue1#definefalse0//宏定義?definecharocrRetBuf[1024]={'\0'};//全局變量,?來接收從OCR后臺返回的數(shù)據(jù)size_treadData(void*ptr,size_tsize,size_tnmemb,void*stream)//回調(diào)函數(shù),把從后臺的數(shù)據(jù)拷貝給ocrRetBuf{strncpy(ocrRetBuf,ptr,1024);}char*getBase64FromFile(char*filePath){char*base64Buf=NULL;charcmd[256]={'\0'};sprintf(cmd,"base64%s>tmpFile",filePath);//圖?的base64system(cmd);流導(dǎo)?到?件中intfd=open("./tmpFile",O_RDWR);intfileLen=lseek(fd,0,SEEK_END);lseek(fd,0,SEEK_SET);base64Buf=(char*)malloc(fileLen+8);memset(base64Buf,'\0',fileLen+8);read(fd,base64Buf,fileLen+8);close(fd);//從?件中讀取base64流到字符串system("rm-ftmpFile");returnbase64Buf;//指針變量隨著?程序調(diào)?結(jié)束消失,但返回了指向有數(shù)據(jù)地址的指針。}boolpostUrl(){CURL*curl;CURLcoderes;//分開定義,然后字符串拼接char*key="xxx";4950515253545556575859606162636465666768697071727374757677787980818283848586char*secret="xxx";inttypeId=21;char*format="xml";char*base64BufPic1=getBase64FromFile("./zhu1.jpg");char*base64BufPic2=getBase64FromFile("./zhu2.jpg");intlen=strlen(key)+strlen(secret)+strlen(base64BufPic1)+strlen(base64BufPic2)+128;//分配空間不夠會>導(dǎo)致棧溢出char*postString=(char*)malloc(len);memset(postString,'\0',len);//因?yàn)閜ostString是?個(gè)指針,不能?sizeof來計(jì)算其指向的??sprintf(postString,"img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",base64BufPic1,base64BufPic2,key,secret,typeId,format)curl=curl_easy_init();if(curl){curl_easy_setopt(curl,CURLOPT_POSTFIELDS,postString);//指定post內(nèi)容,傳?參數(shù)curl_easy_setopt(curl,CURLOPT_URL,"/api/faceliu.do");//指定urlcurl_easy_setopt(curl,CURLOPT_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論