V4L2操作與常見結構

2021-05-27 21:25:57 字數 1259 閱讀 2125

video4linux就提取出了最常見的一些設定,給他們分配了id,這樣大家對於這些常見的設定,

就是用這些id就可以了,可以察看當前裝置對該設定的值,也可以給該設定新值,此外,

由於某些設定包含很多子設定項,因此就又有了menu的含義,即對於乙個具體的control,

我們在列舉他的屬性時,發現其型別是包含了menu的,那麼我們就可以以這個control的id為引數,

察看其menu及各自的值。當然使用者可以由自定義的control以及extended control。

好像是camera control id中就有可以設定focus聚焦的control id,這個可以看一看。

2。data format 應用是可以和device針對通訊的資料進行談判的,即可以設定device所使用的資料的格式,

可以獲得裝置所使用的資料的格式,也可以嘗試一下某種格式的資料裝置是否支援。

使用 vidioc_g_fmt and vidioc_s_fmt ioctls,而vidioc_try_fmt 就是用來試一下某設定是否被裝置支援,

而且只是測試,並不會起作用。我們還是可以用vidioc_enum_fmt來列舉裝置所支援的所有的image的格式的。

關於資料格式,在video中就會涉及到image的格式,大小(寬度,高度),等資訊。

就是把得到的資料作一定的剪裁,和伸縮,剪裁可以只取樣我們可以得到的影象大小的一部分,

剪裁的主要引數是位置和長度以及寬度,而scale的設定是通過

vidioc_g_fmtand

vidioc_s_fmt來獲得和

設定當前的image的長度,寬度來實現的。看下圖

我們可以假設bounds是最大的能捕捉到的影象範圍,defrect是我們的裝置能夠得到的最大的範圍,

這個可以通過

vidioc_cropcap的ioctl來獲得裝置的crap相關的屬性 v4l2_cropcap,

其中的bounds就是這個bounds,其實就是上限。每個裝置都有個預設的取樣範圍,就是defrect,

就是default rect的意思,它比bounds要小一些。這個範圍也是通過vidioc_cropcap的ioctl來

獲得的 v4l2_cropcap

結構中的defrect來表示的,我們可以通過

vidioc_g_crop

and

vidioc_s_crop

來獲取和設定裝置當前的crop設定。

V4L2操作與常見結構

video4linux就提取出了最常見的一些設 置,給他們分配了id,這樣大家對於這些常見的設定,就是用這些id就可以了,可以察看當前裝置對該設定的值,也可以給該設定新值,此外,由於某些設定包 含很多子設定項,因此就又有了menu的含義,即對於乙個具體的control,我們在列舉他的屬性時,發現其型...

V4L2程式設計

include include include include include include include include include include typedef struct buftype buftype user buf int n buffer 0 開啟攝像頭裝置 int ope...

V4L2 程式設計

v4l2程式設計 1.定義 2.工作流程 開啟裝置 檢查和設定裝置屬性 設定幀格式 設定一種輸入輸出方法 緩衝區管理 迴圈獲取資料 關閉裝置。3.裝置的開啟和關閉 include int open const char device name,int flags include int close ...