Exemple #1
0
void CCamSettingDlg::OnCbnSelchangeCbCcdFramespeed()
{
	// TODO: Add your control notification handler code here
	BYTE btmp =0;
	CameraGetFrameSpeed(&btmp);

	CComboBox *pcb=(CComboBox *)GetDlgItem(IDC_CB_CCD_FRAMESPEED);
	DS_FRAME_SPEED frmspeed=(DS_FRAME_SPEED)pcb->GetCurSel();
	if(btmp!=frmspeed)
	{
		if(frmspeed==FRAME_SPEED_NORMAL)
		{
			BOOL bDataWide = FALSE;
			CameraGetDataWide(&bDataWide);
			if (bDataWide)
			{
				CameraSetDataWide(FALSE); 
				CheckDlgButton(IDC_RB_CCD_DW_16, BST_UNCHECKED);
				CheckDlgButton(IDC_RB_CCD_DW_8,  BST_CHECKED);
			}
			GetDlgItem(IDC_RB_CCD_DW_16)->EnableWindow(FALSE);
		}
		else
		{
			GetDlgItem(IDC_RB_CCD_DW_16)->EnableWindow(TRUE);
		}
		CameraSetFrameSpeed((DS_FRAME_SPEED)(frmspeed));
		UpdateExposureTimeText();
	}
}
Exemple #2
0
bool MVCAM::Init()
{
	//相机的设备信息
	tSdkCameraDevInfo sCameraList[10];
	INT iCameraNums = 10;//调用CameraEnumerateDevice前,先设置iCameraNums = 10,表示最多只读取10个设备,如果需要枚举更多的设备,请更改sCameraList数组的大小和iCameraNums的值
	CameraSdkStatus status;

	if (CameraEnumerateDevice(sCameraList, &iCameraNums) != CAMERA_STATUS_SUCCESS || iCameraNums == 0)
	{
		printf("No camera was found!");
		return FALSE;
	}

	//该示例中,我们只假设连接了一个相机。因此,只初始化第一个相机。(-1,-1)表示加载上次退出前保存的参数,如果是第一次使用该相机,则加载默认参数.
	//In this demo ,we just init the first camera.
	if ((status = CameraInit(&sCameraList[0], -1, -1, &m_hCamera)) != CAMERA_STATUS_SUCCESS)
	{
		char msg[128];
		sprintf_s(msg, "Failed to init the camera! Error code is %d", status);
		printf(msg);
		return FALSE;
	}


	//Get properties description for this camera.
	tSdkCameraCapbility sCameraInfo;
	CameraGetCapability(m_hCamera, &sCameraInfo);// 获得相机的属性


	CameraSetAeState(m_hCamera, FALSE);//设置相机曝光的模式。自动或者手动。bState:TRUE,使能自动曝光;FALSE,停止自动曝光。
	CameraSetExposureTime(m_hCamera, 1000 * ExposureTimeMS);//曝光时间10ms = 1000微秒*10
	CameraSetAnalogGain(m_hCamera, 10 * AnalogGain);//设置模拟增益16=1.6  该值乘以 CameraGetCapability  获得的相机属性结构体中sExposeDesc.fAnalogGainStep ,就得到实际的图像信号放大倍数。
	if (ColorType == CV_8U)
	{
		CameraSetMonochrome(m_hCamera, TRUE);//设置黑白图像
	}
	CameraSetFrameSpeed(m_hCamera, sCameraInfo.iFrameSpeedDesc - 1);//设定相机输出图像的帧率。iFrameSpeedSel:选择的帧率模式索引号,范围从 0 到CameraGetCapability 获得的信息结构体中	iFrameSpeedDesc - 1


	//申请空间
	m_pFrameBuffer = (BYTE *)CameraAlignMalloc(sCameraInfo.sResolutionRange.iWidthMax*sCameraInfo.sResolutionRange.iWidthMax * 3, 16);


	if (sCameraInfo.sIspCapacity.bMonoSensor)//ISP 能力描述,BOOL bMonoSensor; //表示该型号相机是否为黑白相机,如果是黑白相机,则颜色相关的功能都无法调节
	{
		CameraSetIspOutFormat(m_hCamera, CAMERA_MEDIA_TYPE_MONO8);
	}

	//创建该相机的属性配置窗口。
	CameraCreateSettingPage(m_hCamera, NULL, "cam", NULL, NULL, 0);//"通知SDK内部建该相机的属性页面";

	//CameraPlay(m_hCamera);//调用 CameraPlay 函数,让相机进入工作模式,并且 SDK 开始接收来自相机的图像。

	//相机初始化完成
	CameraShowSettingPage(m_hCamera, FALSE);//TRUE显示相机配置界面。FALSE则隐藏。

	tSdkImageResolution sRoiResolution;
	memset(&sRoiResolution, 0, sizeof(sRoiResolution));
	sRoiResolution.iIndex = 0xff;
	sRoiResolution.iWidth = 784;
	sRoiResolution.iWidthFOV = sRoiResolution.iWidth * 3;
	sRoiResolution.iHeight = 100;
	sRoiResolution.iHeightFOV = sRoiResolution.iHeight * 3;
	sRoiResolution.iWidthZoomHd = 0;
	sRoiResolution.iHeightZoomHd = 0;
	sRoiResolution.iHOffsetFOV = 128;
	sRoiResolution.iVOffsetFOV = 470;
	sRoiResolution.iWidthZoomSw = 0;
	sRoiResolution.iHeightZoomSw = 0;
	sRoiResolution.uBinAverageMode = 0;
	sRoiResolution.uBinSumMode = 0;
	sRoiResolution.uResampleMask = 0;
	sRoiResolution.uSkipMode = 2;
	CameraSetImageResolution(m_hCamera, &sRoiResolution);//设置预览的分辨率。

	HasInited = true;
	return true;
}