2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì) 任 務(wù) 書</p><p>  課程名稱 嵌入式系統(tǒng) </p><p>  課 題 Qt視頻采集程序 </p><p>  專業(yè)班級(jí) 計(jì)算機(jī) </p><p>  學(xué)生姓名

2、 </p><p>  學(xué) 號(hào) </p><p>  指導(dǎo)老師 </p><p>  任務(wù)書下達(dá)日期 2012年9 月 3 日</p><p>  任務(wù)完成日期 2012年9 月8 日</

3、p><p>  嵌入式系統(tǒng)課程設(shè)計(jì)任務(wù)書</p><p>  設(shè)計(jì)課題7:Qt視頻采集程序</p><p><b>  問(wèn)題描述:</b></p><p>  智能家居系統(tǒng)中,ARM平臺(tái)可通過(guò)USB攝像頭進(jìn)行視頻數(shù)據(jù)的采集,以滿足家庭安防報(bào)警的要求。友好界面的視頻采集程序可對(duì)攝像頭信息進(jìn)行實(shí)時(shí)采集,并向用戶手機(jī)發(fā)送預(yù)警信息。

4、本課題要求在Qt程序中嵌入Opencv計(jì)算機(jī)視覺(jué)類庫(kù)。</p><p><b>  功能設(shè)計(jì)要求:</b></p><p>  1)本系統(tǒng)運(yùn)用Qt creator集成開發(fā)環(huán)境進(jìn)行友好的GUI設(shè)計(jì),并通過(guò)信號(hào)和槽接口嵌入底層opencv視頻采集程序。</p><p>  2)opencv類庫(kù)編譯:</p><p>  Op

5、encv源碼包的解壓和配置</p><p>  Opencv的編譯和安裝</p><p>  3)GUI界面模塊:</p><p>  Qt creator設(shè)計(jì)良好的人機(jī)界面</p><p>  界面實(shí)現(xiàn)攝像頭的打開、視頻幀的抓取、保存功能</p><p><b>  3、要求:</b></

6、p><p>  1)安裝Qt creator;</p><p>  2)對(duì)Qt源碼和視頻采集程序的核心部分加必要注釋和說(shuō)明;</p><p><b>  3)程序能運(yùn)行;</b></p><p><b>  目錄</b></p><p><b>  一、系統(tǒng)介紹1&

7、lt;/b></p><p><b>  二、總體設(shè)計(jì)1</b></p><p><b>  2.1程序模塊1</b></p><p>  2.2.函數(shù)分析1</p><p>  2.3.總體結(jié)構(gòu)1</p><p>  三.主要模塊的實(shí)現(xiàn)2</p>

8、<p><b>  四.程序調(diào)試2</b></p><p><b>  五.總結(jié)與體會(huì)3</b></p><p><b>  六.源程序清單4</b></p><p><b>  系統(tǒng)介紹</b></p><p>  本系統(tǒng)運(yùn)用Qt c

9、reator集成開發(fā)環(huán)境進(jìn)行友好的GUI設(shè)計(jì),并通過(guò)信號(hào)和槽接口嵌入底層opencv視頻采集程序。通過(guò)信號(hào)(signal)和卡槽(slot)對(duì)USB攝像頭進(jìn)行識(shí)別和操作來(lái)采集視頻數(shù)據(jù)。</p><p><b>  二、總體設(shè)計(jì)</b></p><p><b>  2.1程序模塊</b></p><p>  程序只有兩個(gè)模塊

10、,就是采集界面和攝像頭操作。</p><p><b>  2.2.函數(shù)分析</b></p><p>  程序包括幾個(gè)功能函數(shù):1、攝像頭打開函數(shù)openCamera(),識(shí)別并打開攝像頭。2、攝像頭信息讀取函數(shù)readFrame(),從攝像頭中抓取幀,轉(zhuǎn)換為QImage格式,并顯示到界面上。3、攝像頭關(guān)閉函數(shù)closeCamera(),關(guān)閉攝像頭,釋放資源。4、視頻數(shù)

11、據(jù)轉(zhuǎn)換函數(shù)bgr24_bgr32(),申請(qǐng)緩沖空間,將視頻數(shù)據(jù)轉(zhuǎn)換為合適的像素大小的適用界面的格式。</p><p><b>  2.3.總體結(jié)構(gòu)</b></p><p><b>  三.主要模塊的實(shí)現(xiàn)</b></p><p>  在open按鈕上建立signal和slot來(lái)識(shí)別USB攝像頭,如果檢測(cè)到攝像頭將開啟攝像頭,

12、并讀取其信息,將視頻數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,然后將轉(zhuǎn)換成QImage格式的視頻數(shù)據(jù)顯示到label控件上,從而顯示出視頻內(nèi)容。在closeCam按鈕上建立信號(hào)關(guān)閉攝像頭并用opencv中的cvReleaseCapture函數(shù)釋放內(nèi)存。</p><p><b>  四.程序調(diào)試</b></p><p><b>  五.總結(jié)與體會(huì)</b></p>

13、;<p>  對(duì)于Qt來(lái)說(shuō)我已經(jīng)不陌生啦,經(jīng)過(guò)上半年一學(xué)期的Qt界面編程,我已經(jīng)可以獨(dú)立完成一些不大復(fù)雜的程序。對(duì)于這次課程設(shè)計(jì)其實(shí)程序十分簡(jiǎn)單,只是要嵌入opencv這個(gè)陌生的程序包,所以比較復(fù)雜。之前都是運(yùn)用自帶的程序包,在Qt中嵌入其它程序包對(duì)我來(lái)說(shuō)還是第一次,新手上路就會(huì)遇到問(wèn)題,我在網(wǎng)上查了安裝方法,但是有部分是錯(cuò)誤的,導(dǎo)致后面編譯能通過(guò),卻運(yùn)行不了。經(jīng)過(guò)一步步的排查才發(fā)現(xiàn)是安裝錯(cuò)啦,重新安裝后才解決了問(wèn)題。還有

14、一個(gè)問(wèn)題,就是視頻轉(zhuǎn)換這部分,參考了資料才知道要將視頻數(shù)據(jù)轉(zhuǎn)換成QImage格式才可以顯示在界面上,不然系統(tǒng)就會(huì)報(bào)錯(cuò)。</p><p><b>  六.源程序清單</b></p><p>  頭文件cameraget.h</p><p>  #ifndef CAMERAGET_H</p><p>  #define CA

15、MERAGET_H</p><p>  #include <QWidget></p><p>  #include <QImage></p><p>  #include <QTimer> // 設(shè)置采集數(shù)據(jù)的間隔時(shí)間</p><p>  #include<QMessageBox><

16、;/p><p>  #include <highgui.h> //包含opencv庫(kù)頭文件</p><p>  #include <cv.h></p><p>  namespace Ui {</p><p>  class cameraGet;</p><p><b>  }</

17、b></p><p>  class cameraGet : public QWidget</p><p><b>  {</b></p><p><b>  Q_OBJECT</b></p><p><b>  public:</b></p><p&

18、gt;  explicit cameraGet(QWidget *parent = 0);</p><p>  ~cameraGet();</p><p>  char *bgr24_bgr32(int width,int height, char *src);</p><p>  private slots:</p><p>  void

19、openCamera(); // 打開攝像頭</p><p>  void readFrame(); // 讀取當(dāng)前幀信息</p><p>  void closeCamera(); // 關(guān)閉攝像頭。</p><p><b>  private:</b></p><p>  Ui::cam

20、eraGet *ui;</p><p>  bool initCamera;</p><p>  QTimer *timer;</p><p>  CvCapture *cam;// 視頻獲取結(jié)構(gòu), 用來(lái)作為視頻獲取函數(shù)的一個(gè)參數(shù)</p><p>  IplImage *frame;//申請(qǐng)IplImage類型指針,就是申請(qǐng)內(nèi)存空間

21、來(lái)存放每一幀圖像</p><p><b>  };</b></p><p>  #endif // CAMERAGET_H</p><p>  source文件cameraget.cpp</p><p>  #include "cameraget.h"</p><p>  #i

22、nclude "ui_cameraget.h"</p><p>  cameraGet::cameraGet(QWidget *parent) :</p><p>  QWidget(parent),</p><p>  ui(new Ui::cameraGet)</p><p><b>  {</b>

23、;</p><p>  ui->setupUi(this);</p><p>  cam = NULL;</p><p>  timer = new QTimer(this); // 初始化</p><p>  initCamera=FALSE;</p><p><b>  /

24、*信號(hào)和槽*/</b></p><p>  connect(timer, SIGNAL(timeout()), this, SLOT(readFrame())); // 時(shí)間到,讀取當(dāng)前攝像頭信息</p><p>  connect(ui->open, SIGNAL(clicked()), this, SLOT(openCamera()));</p>&l

25、t;p>  connect(ui->closeCam, SIGNAL(clicked()), this, SLOT(closeCamera()));</p><p>  connect(ui->btnExit, SIGNAL(clicked()), this, SLOT(close()));</p><p><b>  }</b></p>

26、<p>  /* 打開攝像頭 */</p><p>  void cameraGet::openCamera()</p><p><b>  {</b></p><p>  if(!initCamera)</p><p><b>  {</b></p><p>

27、  QMessageBox::about(this,"提示","即將打開攝像頭");</p><p>  cam =cvCreateCameraCapture(-1);//打開攝像頭,從攝像頭中獲取視頻</p><p>  if(cam==NULL)</p><p>  QMessageBox::information(thi

28、s,"警告","未連接攝像頭!");</p><p><b>  else</b></p><p>  initCamera=TRUE;</p><p><b>  }</b></p><p>  if(initCamera)</p><p

29、><b>  {</b></p><p>  QMessageBox::about(this,"提示","攝像頭已經(jīng)打開");</p><p>  timer->start(25); // 開始計(jì)時(shí),超時(shí)則發(fā)出timeout()信號(hào)</p><p><b>

30、  }</b></p><p><b>  }</b></p><p>  /* 讀取攝像頭信息 */</p><p>  void cameraGet::readFrame()</p><p><b>  {</b></p><p>  char * image

31、;</p><p>  char * image32=0;</p><p><b>  int size;</b></p><p>  frame = cvQueryFrame(cam);// 從攝像頭中抓取并返回每一幀</p><p>  image=frame->imageData;</p>&l

32、t;p>  size=(frame->width)*(frame->height)*3; //獲取幀視頻像素大小</p><p><b>  if(image)</b></p><p><b>  {</b></p><p>  image32=bgr24_bgr32(frame->width,fr

33、ame->height,frame->imageData);</p><p>  // 將抓取到的幀,轉(zhuǎn)換為QImage格式。</p><p>  QImage image((const uchar*)image32, frame->width, frame->height, QImage::Format_RGB32);</p><p>  

34、ui->label->setPixmap(QPixmap::fromImage(image)); // 將圖片顯示到label上</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*關(guān)閉攝像頭,釋放資源,必須釋放*/</p><p>

35、  void cameraGet::closeCamera()</p><p><b>  {</b></p><p>  timer->stop(); // 停止讀取數(shù)據(jù)。</p><p>  cvReleaseCapture(&cam);//釋放內(nèi)存;</p><p>  QMessag

36、eBox msgBox;</p><p>  msgBox.setWindowTitle(tr("!提示"));</p><p>  msgBox.setText(tr("攝像頭成功關(guān)閉!"));</p><p>  msgBox.exec();</p><p><b>  }</b&g

37、t;</p><p>  char *cameraGet::bgr24_bgr32(int width,int height, char *src)</p><p><b>  {</b></p><p>  char *dst=0, *tmp;</p><p>  dst=(char *)malloc(width*he

38、ight*4); //申請(qǐng)緩沖區(qū)空間</p><p><b>  tmp=dst;</b></p><p>  for(int y=0; y<height;y++) //將視頻數(shù)據(jù)轉(zhuǎn)換為:width*height*3 的數(shù)據(jù)格式</p><p><b>  {</b></p><p>  fo

39、r(int x=0; x<width; x++)</p><p><b>  {</b></p><p>  for(int i=0;i<3;i++)</p><p><b>  {</b></p><p>  *dst++=*src++;</p><p><

40、;b>  }</b></p><p><b>  *dst++=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return(tmp);</p><p><b>

41、;  }</b></p><p>  cameraGet::~cameraGet()</p><p><b>  {</b></p><p>  delete ui;</p><p><b>  }</b></p><p>  主函數(shù)main.cpp</p&

42、gt;<p>  #include <QtGui/QApplication></p><p>  #include<QTextCodec></p><p>  #include "cameraget.h"</p><p>  int main(int argc, char *argv[])</p>

43、<p><b>  {</b></p><p>  QApplication a(argc, argv);</p><p>  //設(shè)置字符編碼為系統(tǒng)字符編碼</p><p>  QTextCodec *codec = QTextCodec::codecForName("System"); //獲取系統(tǒng)編碼

44、</p><p>  QTextCodec::setCodecForLocale(codec);</p><p>  QTextCodec::setCodecForCStrings(codec);</p><p>  QTextCodec::setCodecForTr(codec);</p><p>  cameraGet w;</p&

45、gt;<p><b>  w.show();</b></p><p>  return a.exec();</p><p><b>  }</b></p><p>  計(jì)算機(jī)與通信學(xué)院課程設(shè)計(jì)評(píng)分表</p><p>  課程名稱: 嵌入式系統(tǒng)課程設(shè)計(jì) <

溫馨提示

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

評(píng)論

0/150

提交評(píng)論