【測控技術(shù)與儀器】v4l2視頻采集_第1頁
【測控技術(shù)與儀器】v4l2視頻采集_第2頁
【測控技術(shù)與儀器】v4l2視頻采集_第3頁
【測控技術(shù)與儀器】v4l2視頻采集_第4頁
【測控技術(shù)與儀器】v4l2視頻采集_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

V4L2編程V4L2是針對(duì)UVC免驅(qū)USB設(shè)備的編程框架,主要用于采集USB攝像頭等,編程模式如下一設(shè)置采集方式打開視頻設(shè)備后,可以設(shè)置該視頻設(shè)備的屬性,例如裁剪、縮放等。這一步是可選的。在LINUX編程中,一般使用IOCTL函數(shù)來對(duì)設(shè)備的I/O通道進(jìn)行管理EXTERNINTIOCTLINT_FD,UNSIGNEDLONGINT_REQUEST,_THROW_FD設(shè)備的ID,例如剛才用OPEN函數(shù)打開視頻通道后返回的CAMERAFD;_REQUEST具體的命令標(biāo)志符。在進(jìn)行V4L2開發(fā)中,一般會(huì)用到以下的命令標(biāo)志符VIDIOC_REQBUFS分配內(nèi)存VIDIOC_QUERYBUF把VIDIOC_REQBUFS中分配的數(shù)據(jù)緩存轉(zhuǎn)換成物理地址VIDIOC_QUERYCAP查詢驅(qū)動(dòng)功能VIDIOC_ENUM_FMT獲取當(dāng)前驅(qū)動(dòng)支持的視頻格式VIDIOC_S_FMT設(shè)置當(dāng)前驅(qū)動(dòng)的頻捕獲格式VIDIOC_G_FMT讀取當(dāng)前驅(qū)動(dòng)的頻捕獲格式VIDIOC_TRY_FMT驗(yàn)證當(dāng)前驅(qū)動(dòng)的顯示格式VIDIOC_CROPCAP查詢驅(qū)動(dòng)的修剪能力VIDIOC_S_CROP設(shè)置視頻信號(hào)的邊框VIDIOC_G_CROP讀取視頻信號(hào)的邊框VIDIOC_QBUF把數(shù)據(jù)從緩存中讀取出來VIDIOC_DQBUF把數(shù)據(jù)放回緩存隊(duì)列VIDIOC_STREAMON開始視頻顯示函數(shù)VIDIOC_STREAMOFF結(jié)束視頻顯示函數(shù)VIDIOC_QUERYSTD檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn),例如PAL或NTSC。這些IO調(diào)用,有些是必須的,有些是可選擇的。二一般操作流程(視頻設(shè)備)1打開設(shè)備文件。INTFDOPEN”/DEV/VIDEO0,O_RDWR2取得設(shè)備的CAPABILITY,看看設(shè)備具有什么功能,比如是否具有視頻輸入,或者音頻輸入輸出等。VIDIOC_QUERYCAP,STRUCTV4L2_CAPABILITYV4L2_STD_IDSTDDORETIOCTLFD,VIDIOC_QUERYSTD,WHILERET1SWITCHSTDCASEV4L2_STD_NTSC/CASEV4L2_STD_PAL/3選擇視頻輸入,一個(gè)視頻設(shè)備可以有多個(gè)視頻輸入。VIDIOC_S_INPUT,STRUCTV4L2_INPUT可不要4設(shè)置視頻的制式和幀格式,制式包括PAL,NTSC,幀的格式個(gè)包括寬度和高度等。VIDIOC_S_STD,VIDIOC_S_FMT,STRUCTV4L2_STD_ID,STRUCTV4L2_FORMATSTRUCTV4L2_FORMATFMT/V4L2_FORMAT結(jié)構(gòu)如下STRUCTV4L2_FORMATENUMV4L2_BUF_TYPETYPE/數(shù)據(jù)流類型,必須永遠(yuǎn)是V4L2_BUF_TYPE_VIDEO_CAPTUREUNIONSTRUCTV4L2_PIX_FORMATPIXSTRUCTV4L2_WINDOWWINSTRUCTV4L2_VBI_FORMATVBI_U8RAW_DATA200FMTSTRUCTV4L2_PIX_FORMAT_U32WIDTH/寬,必須是16的倍數(shù)_U32HEIGHT/高,必須是16的倍數(shù)_U32PIXELFORMAT/視頻數(shù)據(jù)存儲(chǔ)類型,例如是YUV422還是RGBENUMV4L2_FIELDFIELD_U32BYTESPERLINE_U32SIZEIMAGEENUMV4L2_COLORSPACECOLORSPACE_U32PRIV/樣例MEMSETFMTTYPEV4L2_BUF_TYPE_VIDEO_CAPTUREFMTFMTPIXWIDTH320FMTFMTPIXHEIGHT240FMTFMTPIXPIXELFORMATV4L2_PIX_FMT_JPEGIFIOCTLFD,VIDIOC_S_FMT,/RETURN05向驅(qū)動(dòng)申請(qǐng)幀緩沖,一般不超過5個(gè)。STRUCTV4L2_REQUESTBUFFERSSTRUCTV4L2_REQUESTBUFFERS_U32COUNT/緩存數(shù)量,也就是說在緩存隊(duì)列里保持多少張照片ENUMV4L2_BUF_TYPETYPE/數(shù)據(jù)流類型,必須永遠(yuǎn)是V4L2_BUF_TYPE_VIDEO_CAPTUREENUMV4L2_MEMORYMEMORY/V4L2_MEMORY_MMAP或V4L2_MEMORY_USERPTR_U32RESERVED2樣例STRUCTV4L2_REQUESTBUFFERSREQMEMSETREQCOUNT4REQTYPEV4L2_BUF_TYPE_VIDEO_CAPTUREREQMEMORYV4L2_MEMORY_MMAPIFIOCTLFD,VIDIOC_REQBUFS,/RETURN16申請(qǐng)物理內(nèi)存將申請(qǐng)到的幀緩沖映射到用戶空間,這樣就可以直接操作采集到的幀了,而不必去復(fù)制。將申請(qǐng)到的幀緩沖全部入隊(duì)列,以便存放采集到的數(shù)據(jù)VIDIOC_QBUF,STRUCTV4L2_BUFFERVIDEOBUFFERBUFFERSCALLOCREQCOUNT,SIZEOFVIDEOBUFFERPRINTF“SIZEOFVIDEOBUFFERISDN“,SIZEOFVIDEOBUFFERSTRUCTV4L2_BUFFERBUFFORNUMBUFS0NUMBUFSREQCOUNTNUMBUFSMEMSETBUFTYPEV4L2_BUF_TYPE_VIDEO_CAPTUREBUFMEMORYV4L2_MEMORY_MMAPBUFINDEXNUMBUFSIFIOCTLFD,VIDIOC_QUERYBUF,/RETURN1PRINTF“BUFLENISDN“,SIZEOFBUF/內(nèi)存映射BUFFERSNUMBUFSLENGTHBUFLENGTHBUFFERSNUMBUFSOFFSETSIZE_TBUFMOFFSETBUFFERSNUMBUFSSTARTMMAPNULL,BUFLENGTH,PROT_READ|PROT_WRITE,MAP_SHARED,FD,BUFMOFFSETPRINTF“BUFFERSLENGTHD,BUFFERSOFFSETD,BUFFERSSTART0DN“,BUFFERSNUMBUFSLENGTH,BUFFERSNUMBUFSOFFSET,BUFFERSNUMBUFSSTART0PRINTF“BUF2LENISDN“,SIZEOFBUFFERSNUMBUFSSTARTIFBUFFERSNUMBUFSSTARTMAP_FAILEDPERROR“BUFFERSERRORN“/RETURN1IFIOCTLFD,VIDIOC_QBUF,/RETURN17開始視頻的采集。ENUMV4L2_BUF_TYPETYPETYPEV4L2_BUF_TYPE_VIDEO_CAPTUREIFIOCTLFD,VIDIOC_STREAMON,/RETURN18出隊(duì)列以取得已采集數(shù)據(jù)的幀緩沖,取得原始采集數(shù)據(jù)。VIDIOC_DQBUF,將緩沖重新入隊(duì)列尾,這樣可以循環(huán)采集。VIDIOC_QBUFIFIOCTLFD,VIDIOC_DQBUF,/RETURN1BUFTYPEV4L2_BUF_TYPE_VIDEO_CAPTUREBUFMEMORYV4L2_MEMORY_MMAPUNSIGNEDCHARPTCURBUFFERSNUMBUFSSTARTDEBUG“BUFBYTESUSEDDN“,BUFBYTESUSEDINTI1FORI10I1BUFBYTESUSEDI1IFBUFFERSNUMBUFSSTARTI10X000000FFBREAKIFI1BUFBYTESUSEDPRINTF“HUFFMANTABLEDONTEXISTN“INTIFORI0IBUFBYTESUSEDIIFBUFFERSNUMBUFSSTARTI0X000000FFPTCURDEBUG“ID,FF02X,D802XN“,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論