如何以编程方式禁用opencv中两个网络摄像头的自动对焦

时间:2013-01-30 07:23:37

标签: c++ opencv webcam directshow

由于自动对焦,我很难校准两个相机并获得它们的姿势。我正在使用两个相同类型的logitech网络摄像头,openCV和C ++。

我试过了:

cv::Size imageSize(1600,1200);      
cv::VideoCapture cap1(0);
cap1.set(CV_CAP_PROP_FRAME_WIDTH,imageSize.width);
cap1.set(CV_CAP_PROP_FRAME_HEIGHT,imageSize.height);

cv::VideoCapture cap2(1);
cap2.set(CV_CAP_PROP_FRAME_WIDTH,imageSize.width);
cap2.set(CV_CAP_PROP_FRAME_HEIGHT,imageSize.height);




IAMCameraControl *pCameraControl; 
HRESULT hr; 
if (hr == S_OK) {
  long defaultFocusValue = 0;
  hr = pCameraControl->Set(CameraControl_Focus, // property 
                        defaultFocusValue, // value
                        CameraControl_Flags_Manual //Flag
                                ); 
}   

只使用一台相机,但有两台相机 - 不是。

谁能帮助我?

1 个答案:

答案 0 :(得分:0)

IAMCameraControl 界面在DirectShow捕获过滤器上公开。您没有展示如何获得此接口,但通常您需要从每个捕获过滤器获取此接口的单独实例,如(C#代码示例)所示:

IAMVideoProcAmp VideoProcAmp1 { get { return cap1 as IAMVideoProcAmp; } }
IAMVideoProcAmp VideoProcAmp2 { get { return cap2 as IAMVideoProcAmp; } }