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_fmt
and
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 ...