我正在嘗試調整攝像頭的亮度。在設置亮度之前,我正在嘗試檢查亮度是否處於自動模式。我們可以通過檢查易失性標誌來實現,但是我正在運行內核版本2.6.32,它沒有這個功能。所以,另一種選擇是檢查V4L2_CID_AUTOBRIGHTNESS,這是我正在做的,但它正在返回EINVAL。在v4l2中獲取布爾值控件的值
我使用下面的代碼來獲取值:
struct v4l2_control control;
control.id = V4L2_CID_BRIGHTNESS; // This is working fine
//control.id = V4L2_CID_AUTOBRIGHTNESS; // This is giving EINVAL in ioctl
if (-1 == ioctl(camDesc, VIDIOC_G_CTRL, &control))
cerr << "VIDIOC_G_CTRL" << " :: " << errno << endl ;
else
cout << "Successfully got property. Value :: " << control.value << endl;
可能V4L2_CID_AUTOBRIGHTNESS是一個布爾屬性,這就是爲什麼它給EINVAL,但當時我無法找到任何其他方法由此我可以得到布爾屬性的值。
感謝您的回覆。你在(b)點提到,** IOCTL只是設置一個屬性**,但你也可以使用IOCTL來獲得一個屬性。它受**請求**的價值支配。在我的情況下,如果您將通過** VIDIOC_G_CTRL **,那麼您將獲得該屬性,並在** VIDIOC_S_CTRL **的情況下,您將獲得該屬性。 – techbull 2015-03-27 08:13:24
是的,因爲通常屬性被緩存在內部結構中(對於某些驅動程序來說可能不是這樣)。 – 0andriy 2015-03-27 14:48:59