我在Windows 10和VS2012 C ++ / CLI中使用OpenCV 3.1。 另外,我使用videoinput库作为相机界面并使用DirectShow。
目前,我可以使用CameraControl属性(例如,焦点)访问相机设置,如下所示:
typedef enum {
CameraControl_Pan,
CameraControl_Tilt,
CameraControl_Roll,
CameraControl_Zoom,
CameraControl_Exposure,
CameraControl_Iris,
CameraControl_Focus
} CameraControlProperty;
typedef enum {
CameraControl_Flags_Auto = 0x0001,
CameraControl_Flags_Manual = 0x0002
} CameraControlFlags;
void Channel::FocusControl(bool tAutoFocusOn)
{
long mDefaultmin,mDefaultmax,mDefaultStep,mDefaultFlags,mDefaultValue,mDefaultfocus;
try
{
CameraVI->getVideoSettingCamera(CameraNumber,CameraControl_Focus,mDefaultmin,mDefaultmax,mDefaultStep,mDefaultfocus,mDefaultFlags,mDefaultValue);
}
catch(...)
{
System::Windows::Forms::MessageBox::Show("Camera unable to set focus!","Camera Error Focus",MessageBoxButtons::OK,MessageBoxIcon::Error);
return;
}
if(tAutoFocusOn)
CameraVI->setVideoSettingCamera(CameraNumber,CameraControl_Focus,mDefaultfocus,CameraControl_Flags_Auto);
else
CameraVI->setVideoSettingCamera(CameraNumber,CameraControl_Focus,mDefaultfocus,CameraControl_Flags_Manual);
}
其中CameraVI是相机实例的指针。
罗技相机有一个LED灯,表明它们已打开,我想将其关闭。这似乎不是CameraControl属性的一部分。
但是,我确实看到了KSPROPERTY和KSCAMERA_EXTENDEDPROP类/结构。哪个,如果其中任何一个控制LED灯(TORCH_MODE?),我该如何访问它?我是所有这些的新手,所以任何代码示例都会很棒。
谢谢, 詹姆斯