项目实战-图像识别项目-通过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.05的gdb,name起名為arm-linux-gdb,設置完成后點擊apply,如下圖所示:
?
?
?
我們把編譯好的QT庫拷貝到ubuntu的/opt路徑下,并解壓,如下圖所示:
?
?
?
點擊kits,然后點擊add,在彈出來的name選項中,我們填寫ARM,device type,設備類型我們選擇桌面,Compiler C和C++我們選擇我們剛剛添加的4.4.1的C和C++,Debugger我們選擇我們剛剛添加的4.4.1的GDB,QT 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。
?
?
?
我們把百度AI的SDK拷貝到Ubuntu的QT工程下,如下圖所示:
?
?
?
然后右鍵點擊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)函數下面:如下圖所示:
?
?
?
至此,我們識別調用百度的接口的代碼已經完成了。
?
?
?
?
?
關注迅為公眾號,持續更新技術干貨。
總結
以上是生活随笔為你收集整理的项目实战-图像识别项目-通过QT制作图形界面并调用百度AI进行图像识别(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k-近邻算法1(kNN)使用kNN算法改
- 下一篇: 怎么写一篇优质爆款小红书种草文案?美妆产