使用海康摄像头采集的代码,参考之前发布的一篇文章,http://t.csdn.cn/Q62Gt
在上次代码中并没有录入关于海康威视sdk调整摄像头参数的部分,查看海康sdk中头文件,<HCNetSDK.h>,其中有关于摄像头参数的结构体如下:
typedef struct tagNET_DVR_VIDEOEFFECT
{
BYTE byBrightnessLevel; /*0-100*/
BYTE byContrastLevel; /*0-100*/
BYTE bySharpnessLevel; /*0-100*/
BYTE bySaturationLevel; /*0-100*/
BYTE byHueLevel; /*0-100,��������*/
BYTE byEnableFunc; //ʹ�ܣ���λ��ʾ��bit0-SMART IR(������)��bit1-���ն�,bit2-ǿ������ʹ�ܣ�0-����1-��
BYTE byLightInhibitLevel; //ǿ�����Ƶȼ���[1-3]��ʾ�ȼ�
BYTE byGrayLevel; //�Ҷ�ֵ����0-[0-255]��1-[16-235]
}NET_DVR_VIDEOEFFECT, *LPNET_DVR_VIDEOEFFECT;
然后有个调用的函数
NET_DVR_API BOOL __stdcall NET_DVR_ClientSetVideoEffect(LONG lRealHandle,DWORD dwBrightValue,DWORD dwContrastValue, DWORD dwSaturationValue,DWORD dwHueValue);
结合函数的结构可以判断,利用已经获取的IRealHandle,然后可以设置画面的亮度,对比,饱和和色度的值。
代码测试(参数中handle为之前调用代码中的全局变量,在NET_DVR_RealPlay_V40调用时获取):
内部liangdu,duibi,baohe,baoguang为设置的参数变量,自己设置就可以了。
不过色度看不出变化。
void x1t_lib::setcamgain(){
bool isok = NET_DVR_ClientSetVideoEffect(handle,liangdu,duibi, baohe,baoguang);
/// [in] NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值
/// [in]亮度(取值为1-100)
/// [in]对比度(取值为1-100)
/// [in]饱和度(取值为1-100)
/// [in]色度(取值为1-100)
/// [in]锐度(取值1-100)
if(isok){
//qDebug() << QString("set cam effect,brightness %1,contrast %2,saturation %3,hue %4").arg(liangdu).arg(duibi).arg(baohe).arg(baoguang);
}
}