qq948463582 发表于 2020-11-24 18:04:15

迅为4412开发板图像识别项目-通过QT制作图形界面并调用百...

硬件平台:iTOP-4412开发板https://img2020.cnblogs.com/blog/559586/202011/559586-20201116120013437-699645985.jpg项目名称:图像识别项目

本文我们来学习利用QT构建一个图形界面并用QT调用百度AI的接口
一.添加arm编译套件打开QT creator 点击Tools->Options
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115136378-1159312647.jpg

点击Build&run,并选择Compilers,如下图所示:https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115147799-145118246***

点击add,选择gcc->c,并在Compiler path 中选择2014.05编译器的gcc,名字起名为arm-linux-gcc,设置完成后点击apply

https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115155976-290154286.jpg

点击add,选择gcc->c,并在Compiler path 中选择2014.05编译器的g++,名字起名为arm-linux-g++,设置完成和后点击apply,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115211566-981114966.jpg


点击debuggers,选择add,在path路径里面我们选择2014.05的gdb,name起名为arm-linux-gdb,设置完成后点击apply,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115221502-1611795981.jpg


我们把编译好的QT库拷贝到ubuntu的/opt路径下,并解压,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115230907-1549750991.jpg

点击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。如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115242426-1308991152.jpg


二.创建一个工程把添加环境变量   点击file->new file or prohect ,创建一个工程,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115256962-98338375***



选择qt widgets
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115308523-1939163021.jpg


设置工程名称和存放路径,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115327790-1566337050.jpg


编译套件选择我们刚刚添加的arm,设置好以后,点击next,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115339397-826060128.jpg


在弹出来的base class选项中,我们选择qwidget,设置好以后选择next,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115349566-1746477740.jpg

点击finish,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115402594-1264533532.jpg


这样我们这个工程就创建完成了,在添加环境变量之前,我们把我们编译的libv4l-0.6.4库拷贝到/usr/local/opencv-2.4.9/lib/下面,命令如下:
cp -r ./lib/* /usr/local/opencv-2.4.9/lib/如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115414904-1132233178.jpg

我们点击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*      \

添加完成后如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115427344-155226488***


设计UI,添加三个label,一个按钮,一个消息框,为了简单,我们就不布局了,所以qwidge的大小我们要设置成和屏幕分辨率大小一样,这里我使用的是金属壳7寸屏幕,所以我这里设置成了1024*600。
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115437586-153316814***


我们把百度AI的SDK拷贝到Ubuntu的QT工程下,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115449246-1930580841.jpg

然后右键点击qtcreator中我们的新建的工程,选add existing files,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115457991-924825983.jpg

在我们拷贝到工程下面的SDK中找到百度AI提示需要的头文件,
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115509788-1602730632.jpg

添加完成如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115523327-1656104058.jpg

头文件的路径要和我这里保持一致,路径如下:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115538703-1700519455.jpg


然后把快速入门的中的client的例子拷贝到widget.cpp里面,拷贝内容如下:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115550920-782941270.jpg

#include "ocr.h"   // 设置APPID/***/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);拷贝完成如下:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115608663-1826825735.jpg






然后把里面的APPID/***/SK替换成我们第一节课创建的应用中生成的APPID/***/SK,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115617866-2095104450.jpg

替换完成如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115628938-366785240.jpg


新建一个函数接着把百度AI 提供的调用的例子直接拷贝过来,如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115640029-1792126051.jpg



拷贝内容如下:

//我们只要把我们用摄像头拍的照片传到下面的这个函数就可以了 //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);添加完如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115706240-170461708***




判断返回值和错误信息,返回格式如下:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115719024-1157037698.jpg


错误信息如下:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115731049-117542996.jpg


判断返回值代码:if(result["error_code"].isNull())   {            return (result["words_result"]["number"].asString() + ",欢迎光临.");   }   else   {      return ("识别失败");   }   return ("识别失败");我们把判断返回值代码写到我们上面新建的std::string eNGetPLatumber(std::string PicturePath)函数下面:如下图所示:
https://img2020.cnblogs.com/blog/559586/202011/559586-20201116115748126-1508316331.jpg


至此,我们识别调用百度的接口的代码已经完成了。
页: [1]
查看完整版本: 迅为4412开发板图像识别项目-通过QT制作图形界面并调用百...