基于嵌入式家庭遠(yuǎn)程監(jiān)控系統(tǒng)項目總結(jié)_第1頁
基于嵌入式家庭遠(yuǎn)程監(jiān)控系統(tǒng)項目總結(jié)_第2頁
基于嵌入式家庭遠(yuǎn)程監(jiān)控系統(tǒng)項目總結(jié)_第3頁
基于嵌入式家庭遠(yuǎn)程監(jiān)控系統(tǒng)項目總結(jié)_第4頁
基于嵌入式家庭遠(yuǎn)程監(jiān)控系統(tǒng)項目總結(jié)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于嵌入式的家庭遠(yuǎn)程監(jiān)控系統(tǒng)項目總結(jié)使用v4l2視頻數(shù)據(jù)采集一、打開設(shè)備文件,和普通文件那樣打開即可二、捕捉視頻的前期準(zhǔn)備1、獲取參數(shù)和設(shè)置要求v4l2_capability結(jié)構(gòu)體通過VIDIO_QUERYCAP操作命令獲取設(shè)備驅(qū)動的參數(shù),保存于v4l2_capability結(jié)構(gòu)體中,包括driver(驅(qū)動名),card(設(shè)備名),bus_info(總線信息)等v4l2_cropcap結(jié)構(gòu)體先設(shè)置v4l2_cropcap的type域,再通過VIDIO_CROPCAP操作命令獲取設(shè)備捕捉能力的參數(shù),保存于v4l2_cropcap結(jié)構(gòu)體中,包括bounds(最大捕捉方框的左上角坐標(biāo)和寬高),def

2、rect(默認(rèn)捕捉方框的左上角坐標(biāo)和寬高)等v4l2_format結(jié)構(gòu)體先填好v4l2_format的各個域,如type(傳輸流類型),fmt.pix.width(寬),fmt.pix.heigth(高),fmt.pix.field(采樣區(qū)域,如隔行采樣),fmt.pix.pixelformat(采樣類型,如YUV4:2:2),然后通過VIDIO_S_FMT操作命令設(shè)置視頻捕捉格式2、初始化內(nèi)存映射v4l2_requestbuffers結(jié)構(gòu)體先填好v4l2_requestbuffers的一些域,如count(幀緩沖個數(shù))等,通過操作命令VIDIO_REQBUFS根據(jù)v4l2_requestbu

3、ffers的要求向內(nèi)核申請幀緩沖向內(nèi)存申請相對應(yīng)的映射空間,然后再使用mmap()系統(tǒng)調(diào)用實現(xiàn)內(nèi)核中的幀緩沖和內(nèi)存中映射空間相互映射v4l2_buffer結(jié)構(gòu)體由于在內(nèi)核中申請幀緩存和在內(nèi)存中申請映射空間不同,后者申請后返回首地址,以后可以通過該首地址向映射空間操作,而前者沒有,所以得要v4l2_buffer結(jié)構(gòu)體做中介。先填好v4l2_buffer結(jié)構(gòu)體的一些域,如index(幀號),type(傳輸流類型),然后通過操作命令VIDIO_QUERYBUF獲取相對應(yīng)于幀號的緩沖幀的信息,并保存于v4l2_buffer結(jié)構(gòu)體中三、捕捉視頻1、啟動攝像頭捕捉視頻v4l2_buf_type枚舉類型將其

4、設(shè)置為V4L2_BUF_TYPE_VIDIO_CAPTURE類型,然后使用VIDIOC_STREAMON操作命令根據(jù)v4l2_buf_type的值開始捕捉視頻2、不斷的讀取數(shù)據(jù)用select()系統(tǒng)調(diào)用輪詢文件描述符集合中的設(shè)備是否準(zhǔn)備好,如果準(zhǔn)備好,即只要從映射空間中讀取數(shù)據(jù)即可注意:在這兩個過程中,需要不斷地將已經(jīng)讀取完數(shù)據(jù)的緩沖幀出隊列,并插進(jìn)到隊列尾,以存儲攝像頭捕捉到的新數(shù)據(jù)3、停止攝像頭捕捉視頻和啟動攝像頭捕捉視頻類似,只是改用VIDIO_STREAMOFF操作命令罷了四、關(guān)閉設(shè)備文件,和普通文件那樣關(guān)閉即可背景:     

5、0; 閱讀新聞基于嵌入式的家庭遠(yuǎn)程監(jiān)控系統(tǒng)項目總結(jié)SDL學(xué)習(xí)入門日期:2012-07-14來源:Linux社區(qū)  作者:xuyuanfan77字體:大 中 小1、搭建開發(fā)平臺    (1)sudo apt-get install libsdl1.2-dev        最基本的開發(fā)包    (2)sudo apt-get install libsdl-image1.2-dev    &

6、#160;   關(guān)于圖像的開發(fā)包    (3)sudo apt-get install libsdl-mixer1.2-dev        關(guān)于音頻的開發(fā)包    (4)sudo apt-get install libsdl-ttf2.0-dev        關(guān)于文字的開發(fā)包    安裝好以上四個開發(fā)包,開發(fā)平臺算是搭建好了 

7、0;  2、最有代表性的簡單程序,包括圖像,文字,音樂,注釋如下:1. #include <stdio.h>   2. #include <stdlib.h>   3. #include <SDL/SDL.h>   4. #include <SDL/SDL_image.h>   5. #include <SDL/SDL_mixer.h> 

8、  6. #include <SDL/SDL_ttf.h>   7.   8. static SDL_Surface* screen;/SDL窗口   9.   10. int main(int argc, char *argv)  11.   12.   13.     int qui

9、t = 0;  14.     SDL_Surface *text_sur;/文字容器   15.     SDL_Surface *background;/圖像容器   16.     SDL_Event event;  17.     SDL_Color color;

10、0; 18.     SDL_Rect srect, drect;  19.     Mix_Music *bgsound;  20.     TTF_Font *font;  21.       22.     /初始化SDL   23.

11、     if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) < 0)  24.       25.         fprintf(stderr, "SDL init error:%sn", SDL_GetError();  26.  

12、       exit(0);  27.       28.     atexit(SDL_Quit);/注冊退出時調(diào)用的操作   29.       30.       31.     /設(shè)置SDL屏幕大小 

13、  32.     screen = SDL_SetVideoMode(600, 400, 24, SDL_HWSURFACE);  33.     if (screen = NULL)  34.       35.         fpr

14、intf(stderr, "Set video mode failure:%sn", SDL_GetError();  36.         exit(0);  37.       38.       39.     /設(shè)置SDL窗口標(biāo)題 

15、;  40.     SDL_WM_SetCaption("test", NULL);  41.    42.     /*顯示圖像*/  43.     background = IMG_Load("background.jpg");/導(dǎo)入圖像文件,并將圖像放入文字容器   44. &#

16、160;   srect.x = 0;  45.     srect.y = 0;  46.     srect.w = background->w;  47.     srect.h = background->h;  48.     

17、drect = srect;/設(shè)置截取范圍   49.     SDL_BlitSurface(background, &srect, screen, &drect);/將圖像容器放入SDL窗口   50.   51.     /*顯示文字*/  52.     /初始化TTF   

18、53.     if (TTF_Init() < 0)  54.       55.         fprintf(stderr, "TTF init error:%sn", SDL_GetError();  56.      &#

19、160;  return;  57.       58.       59.     font = TTF_OpenFont("test.ttf", 40);/導(dǎo)入字體文件   60.     color.r = 255;  61. 

20、60;   color.g = 0;  62.     color.b = 0;/設(shè)置文字顏色   63.     text_sur=TTF_RenderText_Solid(font, "Hello, Welcome to GAME!", color);/將文字放入文字容器   64.  

21、;     65.     srect.x = 0;  66.     srect.y = 0;  67.     srect.w = text_sur->w;  68.     srect.h = text_sur->h; &

22、#160;69.       70.     drect.x = (600 - text_sur->w) / 2;  71.     drect.y = (400 - text_sur->h) / 2;  72.     drect.w 

23、= text_sur->w;  73.     drect.h = text_sur->h;/設(shè)置截取范圍   74.     SDL_BlitSurface(text_sur, &srect, screen, &drect);/將文字容器放入SDL窗口   75.       76. &#

24、160;   SDL_UpdateRect(screen, 0, 0, 600, 400);/更新SDL窗口,讓新添加的容器顯示   77.   78.     /*播放聲音*/  79.     Mix_OpenAudio(44100, AUDIO_S16, 2, 4096);/打開音頻   80.  &#

25、160;  bgsound = Mix_LoadMUS("bgsound.mp3");/導(dǎo)入聲音文件   81.     Mix_PlayMusic(bgsound, -1);/播放音頻   82.     while (quit = 0)  83.       84. 

26、0;       while (SDL_PollEvent(&event)  85.           86.             switch (event.type)  87.     

27、60;         88.              case SDL_QUIT:  89.                 Mix_CloseAudio();/關(guān)閉音頻 &#

28、160; 90.                 quit = 1;  91.                 break;  92.       &

29、#160;      default:  93.                 break;  94.               95.      

30、;     96.         SDL_Delay(100);  97.       98.       99.     return 0;  100.   問題:gcc main.c -o main編譯時可能會出現(xiàn)如下錯誤:1. ma

31、in.c:(.text+0x19): undefined reference to SDL_Init'  2. main.c:(.text+0x22): undefined reference to SDL_GetError'  3. main.c:(.text+0x50): undefined reference to SDL_Quit'  4. main.c:(.text+0x79):&#

32、160;undefined reference to SDL_SetVideoMode'  5. main.c:(.text+0x8c): undefined reference to SDL_GetError'  6. main.c:(.text+0xc7): undefined reference to SDL_WM_SetCaption'  7. main.c:(.text+0xd3): 

33、;undefined reference to IMG_Load'  8. main.c:(.text+0x132): undefined reference to SDL_UpperBlit'  9. main.c:(.text+0x137): undefined reference to TTF_Init'  10. main.c:(.text+0x140): undefined reference to SDL_GetError'  11. main.c:(.text+0x174): undefined reference to TTF_OpenFont'  12. main.c:(.text+0x1

溫馨提示

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

評論

0/150

提交評論