通过QT制作图形界面并调用百度AI进行图像识别(二)

发布者:fnfeecjknquc最新更新时间:2021-12-24 来源: eefocus关键字:百度AI  图像识别 手机看文章 扫描二维码
随时随地手机看文章

4412开发板图像识别项目-通过QT制作图形界面并调用百度AI进行图像识别(二)


项目名称:图像识别项目 

硬件平台:iTOP-4412开发板

 

 

 

接下来,我们要把摄像头拍的照片通过OPENCV显示到屏幕上,并且拍照传给百度AI的接口。

首先,我们先要初始化我们的摄像头,我们新添加一个函数,使用cvCreateCameraCapture函数从摄像头中获取视频。

cvCreateCameraCapture,初始化从摄像头中获取视频 CvCapture* cvCreateCameraCapture( int index );index:要使用的摄像头索引

函数实现:

#include

#include

void Widget::InitCamara()  //这个函数属于Widget

{    //打开摄像头    

//这句代码的意思是打开video4,括号中的參数仅仅要有:    

// 0 , -1, 202 但要依据你自己的情况改,实測204可以成功打开    

camera = cvCreateCameraCapture(204);

}

如下图所示:

 

 

  在widget.h里面声明这个函数和参数camera 并添加头文件,代码如下:

#include

#include

CvCapture *camera;//视频获取结构, 用来作为视频获取函数的一个参数

void InitCamara();

如下图所示:

 

摄像头初始化完成之后,我们要获取我们摄像头的图像,获取图像的思路是:使用定时器,时间到则去读取摄像头的图像,所以我们这里要QTimer类,这个类里面提供了定时器

首先,我们在widget.h里面声明一个定时器,和一个槽函数,代码如下:

#include //包含QTimer头文件

QTimer    timer; //声明QTimer对象

private slots:    

void ReadFarme(); //声明槽函数

添加完成后如下图所示:

 

  接着我们修改widget.cpp里面的初始化摄像头的代码,我们在初始化摄像头的函数里面开启定时器,并添加在槽函数里面获取摄像头图片

启动定时器代码:

#include //包含QTimer头文件

timer.start(50); //启动定时器,1000为1S ,50为50ms,超时则发出timeoout信号

添加完成后如下图所示:

 

先在widget.h里面声明一个IplImage用来表示图像,也就是申请内存空间来存放每一帧图像,其中Ipl是Intel Image Processing Library的简写。还要在声明一个QImage,因为我们要将抓取到的帧,转换为QImage格式

 IplImage  *frame; //申请IplImage类型指针,就是申请内存空间来存放每一帧图像

 QImage    imag; //声明QImage对象

添加完如下图所示:

 

编写槽函数,在槽函数里面获取图片,代码如下:

void Widget::ReadFarme()

{    

//从摄像头读取一张图片    

//这个函数cvQueryFrame作用是从摄像头或者文件中抓取一帧    

//参数为视频获取结构也就是我在初始化摄像头声明的CvCapture *camera;    

frame = cvQueryFrame(camera);    

//将图片格式转换成QImage格式,否则不能再lable上显示    

imag = QImage((const uchar*)frame->imageData,                       

  frame->width,                           

  frame->height,                           

  QImage::Format_RGB888).rgbSwapped();    

//用label显示一张图片    

ui->frame->setPixmap(QPixmap::fromImage(imag));

}

添加完如下图所示:

 

     最后,我们要连接信号和槽,当计时超过我们设置的50ms以后,发出timeout信号,然后执行槽函数ReadFarme(),代码如下:

connect(&timer,SIGNAL(timeout()),this,SLOT(ReadFarme()));

添加完如下图所示:

 

获取摄像头图像并显示在屏幕上,我就完成了,接下来我们把获取到的图线传递给百度AI的接口,然后获取百度AI接口返回的数值并把返回值显示在屏幕上。

这里我们点击widget.ui文件,如下图所示:

 

右键点击pushbutton空间,选择go to slot,如下图所示:

 

然后在弹出的界面选择clcked,并点击ok,这样他就帮我们生成了一个槽函数,如下图所示:

 

转到槽成功以后,会在widget.cpp下面生成一个槽函数,并且在widget.h下自动帮我们声明和连接,这样我们就不用再手动添加了,为什么我们在使用定时器的时候不用这个办法呢,因为定时器没有实体的控件,所以我们不能直接这样操作,如下图所示:

widget.cpp

 

 

widget.h

 

我们在widget.cpp自动生成的槽函数里面添加以下代码:这段代码的作用为当我们点击识别的按键的时候,会拍一张照片,并显示到屏幕上,并把拍下的照片传递给百度AI的接口进行识别,然后把识别出来的数据显示到屏幕上,

std::string PlateNumber ;    

int Ret;        

frame = cvQueryFrame(camera);   

//将图片格式转换成QImage格式,否则不能再lable上显示    

imag = QImage((const uchar*)frame->imageData,                            

frame->width,                            

frame->height,                            

QImage::Format_RGB888).rgbSwapped();    

//用label显示一张图片    

ui->picture->setPixmap(QPixmap::fromImage(imag));        

 

//保存图片到本地    

imag.save("./PlateNumber.jpg", "JPG", 100);       

/

/把拍下来的照片传递给百度AI接口获取车牌号    

PlateNumber = GetPlateNumber("./PlateNumber.jpg");    

 

//把接口返回来的数据显示到屏幕上    

ui->plateNumber->setText(QString::fromStdString(PlateNumber));

 把拍下来的照片传递给百度AI接口我们使用的是我们在调用百度AI接口时定义的GetPlateNumber函数,在定义GetPlateNumber函数的时候,我们知道我们只要把图片给到接口就可以了,所以这里我们先把拍下来的图片保存到本地,也就是是板子上,然后在把他的路径通过函数穿参给到GetPlateNumber的这个函数。

 

添加完如下图所示:

 

最后,设置中文字体,我们打开main.cpp,添加以下代码,设置我们显示的字体

QFont font;

font.setPointSize(16);

font.setFamily(("wenquanyi"));

font.setBold(false);

a.setFont(font);

添加完如下图所示:

 

至此,我们在屏幕上显示图像并拍照发给百度AI接口并获取接口的返回值显示到板子上就已经完成了。


关键字:百度AI  图像识别 引用地址:通过QT制作图形界面并调用百度AI进行图像识别(二)

上一篇:迅为4412开发板接口详解(一)
下一篇:通过QT制作图形界面并调用百度AI进行图像识别(一)

推荐阅读最新更新时间:2024-11-11 11:15

百度若一摆渡人,如何渡过AI这条大河?
社会经济的持续发展是靠通用技术的不断出现而持续推动的。所谓通用技术,简单理解就是要有多种用途,应用到经济的几乎所有地方,并且有巨大的技术互补性和溢出效应。 ——理查德·利普西(Richard G Lipsey)《经济转型:通用技术和长期经济增长》 毋庸置疑的是,人工智能是下一个通用技术,但相比过往的蒸汽机、铁路和电力等通用技术,AI的门槛高了不止一筹,也就造就人工智能辐射范围有限,落地速度比预期慢的现状。但正如李彦宏断言,人工智能对于人类社会的影响比互联网对人类社会的影响要更加深远,业界内外普遍认同AI的推动力,就如何落地AI的细节和模式方面却未有一致看法。 一端是各行各业迫切
[嵌入式]
<font color='red'>百度</font>若一摆渡人,如何渡过<font color='red'>AI</font>这条大河?
中国科学家异质人脸图像识别研究取得新突破
    摘要: 西安电子科技大学高新波教授带领的研究团队在异质人脸图像识别研究领域取得重要进展,其对香港中文大学人脸素描标准数据库(CUFS)的识别准确率达到了 99.67%。根据这一研究成果研发的异质人脸图像识别系统,如果应用到刑侦过程中,有望帮助办案人员缩小犯罪嫌疑人的搜寻范围。     人脸识别是计算机视觉和人工智能研究领域一个重要课题,在身份认证等公共安全领域有大量应用。异质人脸识别是一种基于图像合成的人脸识别技术。     “所谓异质人脸图像,就是不同方式、不同来源获得的不同质量的人脸图像。”高新波教授介绍说,由于数据来源不同、图片质量不同,在人脸识别研究领域,照片、素描等不同来源人脸图像,难以使用计算机进行直
[安防电子]
汪峰的FIIL耳机用百度DuerOS系统,这是要蹭AI热点?
白兵战:极为残酷的战斗,一般来说双方的伤亡率基本是1:1,这就不仅要求士兵有很好的刺杀技术,而且要有极强的心理承受能力,即稳定的心理素质。   语言,是人类最为重要的交际工具,它不仅是一个文明的传承、思维的载体、逻辑的运用,也是情感的传递。   当下, 人工智能 已经成为行业内竞相追逐的新热点。基于人类自然语义理解的人工语音助手,也正被推向科技行业的风口浪尖。从2011年苹果推出智能语音助手Siri开始算起,陪着我们走过“七年止痒”的语音助手,如今也早已不再拘泥一种形态,开始变得无处不在。   继去年 智能音箱 被行业内视为智能家庭以及服务的入口而迎来爆发增长之后,今年,厂商们开始将智能语音助手与耳机向结合, 智能耳机 产品如雨后
[嵌入式]
“出道”即量产 百度发布昆仑芯2代AI芯片
8月18日,百度创始人、董事长兼CEO李彦宏在百度世界大会上宣布第2代自研AI芯片——昆仑芯2(又称“昆仑2”),正式量产。值得一提的是,本次不是宣布流片成功,而是直接宣告量产。昆仑芯2的“出道即量产”展示出百度昆仑芯片研发的强大实力和技术自信。 昆仑芯2的性能、通用性、易用性较1代产品均有显著增强。该芯片采用全球领先的7nm制程,搭载自研的第二代XPU架构,相比1代性能提升2-3倍。整数精度(INT8)算力达到256 TeraOPS,半精度(FP16)为128 TeraFLOPS,而最大功耗仅为120W。 硬件设计上,该芯片是国内首款采用显存的通用AI芯片,对于推动国内AI芯片技术研发和商业落地都具有重要价值。此外,昆仑
[半导体设计/制造]
“出道”即量产 <font color='red'>百度</font>发布昆仑芯2代<font color='red'>AI</font>芯片
小米成全球最大智能硬件IoT平台,与百度达成AI战略合作
从启动智能硬件IoT平台到平台接入市占率问鼎全球之一,小米只用了三年。三年前小米董事长雷军首次公开小米IoT战略,即以手机为核心连接所有的智能设备;三年后的今天,小米已经成为全球最大的智能硬件IoT平台。 在11月28日的小米2017 IoT开发者大会上,雷军表示,小米IoT下一阶段的战略是将全面开放,此次公布小米IoT开发者计划就是这一理念的具体体现,目前小米IoT平台联网设备超过8500万台,日活设备超过1000万台,合作伙伴超400家。 回顾小米的物联网平台高速发展的这三年,小米既要做好平台,又要做好产品。IoT平台越做越大,接入数量越来越多,要求小米在做好平台时,也需要做好IoT的底层协议产品。在平台方面,小米Io
[手机便携]
百度、科大讯飞等巨头齐聚 震撼亮相3E人工智能及芯片大会
随着人工智能在我国移动互联网、智能家居等领域的发展,我国人工智能产业持续高速成长,其应用也呈现全方位、多领域方向布局态势。2018年,3E北京国际人工智能及芯片大会先声夺人,强势引领AI产业发展潮流。 百度、科大讯飞、深兰科技、华为等行业巨头均已确定参展,“智动全球,慧享生慧”的蓝图在3E舞台上将得到前所未有的尽情彰显。值得一提的是,3E北京国际人工智能及芯片大会以“展览+会议”的形式展开,整体展示面积近4万平方米,大会深挖人脸识别、语音识别、智慧零售、智能硬件、AI芯片、大数据等领域,全力构建人工智能产业链生态圈,已经成为国内规模较大同时也是专业度较高人工智能全产业链展示、交易、对接平台。 百度——百度机器人、智能硬件、AI
[机器人]
东芝Visconti™4图像识别处理器为主动安全系统提供支持
东京--东芝电子元件及储存装置株式会社(Toshiba Electronic Devices & Storage Corporation)今日宣布,株式会社电装(DENSO)在其新一代基于前置摄像头的主动安全系统中采用了东芝最新的专门面向汽车应用的图像识别处理器——Visconti™4。Visconti™4是领先的多引擎道路安全解决方案,可为司机提供道路状况和潜在危险的实时分析。 电子系统在驾驶领域正在发挥日益重要的核心作用,包括高级驾驶辅助系统和对自动驾驶汽车的支持,尤其是在促进道路安全方面。欧盟支持的具有影响力的安全标准,欧洲新车评鉴规程(Euro NCAP)的最新版新增了评估防撞功能方面的标准,以提高对自行车骑行者和行人
[嵌入式]
东芝Visconti™4<font color='red'>图像识别</font>处理器为主动安全系统提供支持
空客飞机采用自动驾驶/图像识别技术自主起飞 为飞行汽车奠定基础
据外媒报道,一架空客(Airbus)飞机利用由计算机视觉系统提供支持的自动驾驶技术,成功自动起飞,标志着自动飞行汽车的实现又向前迈进了一步。 (图片来源:空客) 当地时间1月16日,空客宣布其在2019年12月18日进行了自动飞行测试。测试机组包括两名飞行员、两名飞行工程师和一名试飞工程师,机组人员在4小时内进行了8次起飞操作。 一般来说,飞机会与仪表着陆系统(ILS)通信,ILS会依靠跑道上的无线电广播在起飞过程中,对飞行员提供指导,而且需要传统的机场基础设施才可以启动飞行。 因此,空客在飞机上安装了一个图像识别系统,让飞机在没有飞行员操作控制系统,或飞行员无需与跑道系统通信的情况下,成功起飞。 空客试飞员
[汽车电子]
空客飞机采用自动驾驶/<font color='red'>图像识别</font>技术自主起飞 为飞行汽车奠定基础
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved