項目實戰-圖像識別項目-通過QT制作圖形界面並調用百度AI進行圖像識別(一)


 

 

轉自迅為4412開發板項目實戰教程

B站視頻地址:https://www.bilibili.com/video/BV157411c7sc?p=7

 

硬件平台:iTOP-4412開發板

項目名稱:圖像識別項目 

 

 

 

 

我們來學習利用QT構建一個圖形界面並用QT調用百度AI的接口

 

.添加arm編譯套件

打開QT creator 點擊Tools->Options

 

 

 

 

點擊Build&run,並選擇Compilers,如下圖所示:

 

 

 

點擊add,選擇gcc->c,並在Compiler path 中選擇2014.05編譯器的gcc,名字起名為arm-linux-gcc,設置完成后點擊apply

 

 

 

 

點擊add,選擇gcc->c,並在Compiler path 中選擇2014.05編譯器的g++,名字起名為arm-linux-g++,設置完成和后點擊apply,如下圖所示:

 

 

 

點擊debuggers,選擇add,在path路徑里面我們選擇2014.05gdbname起名為arm-linux-gdb,設置完成后點擊apply,如下圖所示:

 

 

 

我們把編譯好的QT庫拷貝到ubuntu/opt路徑下,並解壓,如下圖所示:

 

 

 

點擊kits,然后點擊add,在彈出來的name選項中,我們填寫ARMdevice type,設備類型我們選擇桌面,Compiler CC++我們選擇我們剛剛添加的4.4.1CC++Debugger我們選擇我們剛剛添加的4.4.1GDBQT version我們選擇我們剛剛在/opt下解壓的qmake,設置完成之后我們點擊apply並點擊ok。如下圖所示:

 

 

 

.創建一個工程把添加環境變量

     點擊file->new file or prohect ,創建一個工程,如下圖所示:

 

 

 

 

選擇qt widgets

 

 

 

設置工程名稱和存放路徑,如下圖所示:

 

 

 

 

編譯套件選擇我們剛剛添加的arm,設置好以后,點擊next,如下圖所示:

 

 

 

在彈出來的base class選項中,我們選擇qwidget,設置好以后選擇next,如下圖所示:

 

 

 

點擊finish,如下圖所示:

 

 

 

這樣我們這個工程就創建完成了,在添加環境變量之前,我們把我們編譯的libv4l-0.6.4庫拷貝到/usr/local/opencv-2.4.9/lib/下面,命令如下:

 

cp -r ./lib/* /usr/local/opencv-2.4.9/lib/

如下圖所示:

 

 

 

我們點擊pro文件,添加庫的環境變量。環境變量如下:

INCLUDEPATH +=  /usr/local/curl/include                     \                    /usr/local/json/include                     \          

                   /usr/local/openssl/include                  \        

                   /usr/local/opencv-2.4.9/include             \          

                  /usr/local/opencv-2.4.9/include/opencv      \            

/usr/local/opencv-2.4.9/include/opencv2     \

 

LIBS +=   /usr/local/curl/lib/libcurl.so.4.5.0        \      

          /usr/local/json/lib/libjsoncpp.so           \      

          /usr/local/openssl/lib/libssl.so.1.0.0      \      

         /usr/local/openssl/lib/libcrypto.so.1.0.0   \     

         /usr/local/opencv-2.4.9/lib/libopencv*       \   

        /usr/local/opencv-2.4.9/lib/libv4l1*         \    

/usr/local/opencv-2.4.9/lib/libv4l2*        \       

 /usr/local/opencv-2.4.9/lib/libv4lc*        \

 

 

添加完成后如下圖所示:

 

 

 

設計UI,添加三個label,一個按鈕,一個消息框,為了簡單,我們就不布局了,所以qwidge的大小我們要設置成和屏幕分辨率大小一樣,這里我使用的是金屬殼7寸屏幕,所以我這里設置成了1024*600

 

 

 

我們把百度AISDK拷貝到UbuntuQT工程下,如下圖所示:

 

 

 

然后右鍵點擊qtcreator中我們的新建的工程,選add existing files,如下圖所示:

 

 

 

在我們拷貝到工程下面的SDK中找到百度AI提示需要的頭文件,

 

 

 

添加完成如下圖所示:

 

 

 

頭文件的路徑要和我這里保持一致,路徑如下:

 

 

 

然后把快速入門的中的client的例子拷貝到widget.cpp里面,拷貝內容如下:

 

 

 

#include "ocr.h"   

// 設置APPID/AK/SK    

std::string app_id = "你的 App ID";    

std::string api_key = "你的 Api key";    

std::string secret_key = "你的 Secret Key";    

aip::Ocr client(app_id, api_key, secret_key);

拷貝完成如下:

 

 

 

 

 

 

 

然后把里面的APPID/AK/SK替換成我們第一節課創建的應用中生成的APPID/AK/SK,如下圖所示:

 

 

 

替換完成如下圖所示:

 

 

 

 

新建一個函數接着把百度AI 提供的調用的例子直接拷貝過來,如下圖所示:

 

 

 

 

拷貝內容如下:

 

 

//我們只要把我們用攝像頭拍的照片傳到下面的這個函數就可以了 //aip::get_file_content("/assets/sample.jpg", &image)

Json::Value result;

std::string image; aip::get_file_content("/assets/sample.jpg", &image);

// 調用車牌識別

result = client.license_plate(image, aip::null);

// 如果有可選參數 std::map<std::string, std::string> options;

options["multi_detect"] = "true";

// 帶參數調用車牌識別

result = client.license_plate(image, options);

添加完如下圖所示:

 

 

 

 

 

判斷返回值和錯誤信息,返回格式如下:

 

 

 

錯誤信息如下:

 

 

 

判斷返回值代碼:

if(result["error_code"].isNull())    

{        

      return (result["words_result"][0]["number"].asString() + ",歡迎光臨.");    

}   

else    

{        

return ("識別失敗");    

}    

return ("識別失敗");

我們把判斷返回值代碼寫到我們上面新建的std::string eNGetPLatumber(std::string PicturePath)函數下面:如下圖所示:

 

 

 

至此,我們識別調用百度的接口的代碼已經完成了。

 

 

 

 

 

關注迅為公眾號,持續更新技術干貨。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM