Я использую OpenCV 2.4.6 как с C++, так и с Python на Kubuntu 12.04. С веб-камерой Logitech Quick Cam Pro 3000 мне удалось установить размер кадра, но VideoCapture::set()
всегда возвращает false.
// C++
VideoCapture lCap( 0 );
cout << lCap.get( CV_CAP_PROP_FRAME_WIDTH ) << endl;
cout << lCap.get( CV_CAP_PROP_FRAME_HEIGHT ) << endl;
cout << boolalpha << lCap.set( CV_CAP_PROP_FRAME_WIDTH, 320 ) << endl;
cout << boolalpha << lCap.set( CV_CAP_PROP_FRAME_HEIGHT, 240 ) << endl;
cout << lCap.get( CV_CAP_PROP_FRAME_WIDTH ) << endl;
cout << lCap.get( CV_CAP_PROP_FRAME_HEIGHT ) << endl;
дает:
640
480
false
false
320
240
а также
# Python 2.7
Cap = cv2.VideoCapture( 0 )
print( Cap.get( CV_CAP_PROP_FRAME_WIDTH ) )
print( Cap.get( CV_CAP_PROP_FRAME_HEIGHT ) )
print( Cap.set( CV_CAP_PROP_FRAME_WIDTH, 320 ) )
print( Cap.set( CV_CAP_PROP_FRAME_HEIGHT, 240 ) )
print( Cap.get( CV_CAP_PROP_FRAME_WIDTH ) )
print( Cap.get( CV_CAP_PROP_FRAME_HEIGHT ) )
тоже самое дает.
Поэтому я хочу знать, нормально ли это поведение (либо OpenCV, либо библиотеки V4L, V4L2???, либо моя веб-камера). Если это так, я всегда могу проверить свою попытку, выполнив get()
после set()
. Но если что-то не так, я хотел бы это знать.
См. документ: документ для VideoCapture::set( ), OpenCV 2.4.6
Спасибо!