//////////////////////////////////////////////////////////////////// // Method: Start // Class: CCamera // Purose: Start capture // Input: nothing // Output: nothing //////////////////////////////////////////////////////////////////// void CCamera::Start() { m_Capture.open(0); cv::Mat pFrame; // grab first frame to initialize format m_Capture.read(pFrame); // get camera's size GetSize(); #if 0 int ncameras = cvcamGetCamerasCount(); printf("DEBUG :: Found cameras=%d\n", ncameras ); int w = 640; int h = 480; int nCam = 0; int t=1; int p=1; cvcamSetProperty(nCam, CVCAM_RNDWIDTH, &w ); cvcamSetProperty(nCam, CVCAM_RNDHEIGHT, &h ); cvcamSetProperty(nCam, CVCAM_PROP_ENABLE, &t ); int width = 320; int height = 200; HWND MyWin = (HWND)m_pCameraView->GetHandle(); cvcamSetProperty(nCam, CVCAM_PROP_WINDOW, &MyWin ); cvcamSetProperty(nCam, CVCAM_PROP_RENDER, &p ); cvcamSetProperty(0, CVCAM_PROP_CALLBACK, (void*)testcallback ); cvcamInit(); Sleep( 5000 ); cvcamStart(); #endif m_isRunning = true; }
int Init_Camera (ClientData, Tcl_Interp *interp, int, char **argv) { cvcamWindow mainwin; int ncameras,ret; Tk_Window win; char com[1000]="set dlg [Dialog .dlg -parent . -modal local -separator 1 -title \"Choice of cameras\" \ -side bottom -anchor s -default 0]"; CameraDescription cd; ncameras = cvcamGetCamerasCount(); if (ncameras==0) { Tcl_Eval(interp,"tk_dialog .pattern {Error} { Cameras not found.} {} 0 OK"); return TCL_ERROR; } ret = Tcl_Eval(interp,com); strcpy(com,"$dlg add -name ok -width 5"); ret = Tcl_Eval(interp,com); strcpy(com, "set top [$dlg getframe]"); ret = Tcl_Eval(interp,com); strcpy(com, "label $top.lab1 -text \"Several cameras has found in your system. Choose one of them.\" \n\ pack $top.lab1 -side top -anchor nw" ); ret = Tcl_Eval(interp,com); strcpy(com, "label $top.lab2 -text \"\" \n\ pack $top.lab2 -side top -anchor nw"); ret = Tcl_Eval(interp,com); strcpy(com, "label $top.lab3 -text \"Cameras:\" \n\ pack $top.lab3 -side top -anchor nw"); ret = Tcl_Eval(interp,com); strcpy(com, "ComboBox $top.cb -width 50 -height 4 -editable no -modifycmd CVLkDemo::Modify"); ret = Tcl_Eval(interp,com); strcpy(com, "pack $top.cb -side top"); ret = Tcl_Eval(interp,com); strcpy(com, "$top.cb configure -values {"); for (int i=0; i<ncameras; i++) { cvcamGetProperty(i, CVCAM_DESCRIPTION, (void*)&cd); strcat(com,"\""); strcat(com,cd.DeviceDescription); strcat(com,"\" "); } strcat(com,"}"); ret = Tcl_Eval(interp, com); strcpy(com,"$top.cb setvalue @0 \n CVLkDemo::Modify \n set ret [$dlg draw]"); ret = Tcl_Eval(interp, com); strcpy(com,"destroy $dlg"); ret = Tcl_Eval(interp, com); ret = Tcl_Eval(interp, "set tmp $CVLkDemo::cam"); int n = atoi(interp->result); ret = Tcl_Eval(interp, "set f $CVLkDemo::curframe"); win = Tk_NameToWindow(interp, interp->result, Tk_MainWindow(interp)); Tk_MapWindow(win); int w = Tk_Width(win); int h = Tk_Height(win); mainwin = SYSTEM_WIN_FROM_TK_WIN(win); int prop; cvcamSetProperty(n, CVCAM_PROP_ENABLE, CVCAMTRUE); cvcamSetProperty(n, CVCAM_PROP_RENDER, CVCAMTRUE); cvcamSetProperty(n, CVCAM_PROP_WINDOW, &mainwin); cvcamSetProperty(n, CVCAM_PROP_CALLBACK, (void*)testcallback); cvcamSetProperty(n, CVCAM_RNDWIDTH, (void*)&w); cvcamSetProperty(n, CVCAM_RNDHEIGHT, (void*)&h); view.SetSize(w,h); cvcamInit(); cvcamGetProperty(n, CVCAM_DESCRIPTION, (void*)&cd); sprintf(com,"set CVLkDemo::curcam \"%s\"",cd.DeviceDescription); Tcl_Eval(interp, com); return TCL_OK; }
bool InitCVCAM(int c) { printf("CamTest started ..\n"); int cameras = cvcamGetCamerasCount(); printf("Cameras detected: %d \n",cameras); if(c>=cameras) return false; int cameraSelected = -1; /*if(cameras>0) cameraSelected=0;*/ if(c==-1) { int * out; int nselected = cvcamSelectCamera(&out); if(nselected>0) cameraSelected = out[0]; } else cameraSelected=c; if (cameraSelected > -1) { printf("The selected camera is camera number %d \n", cameraSelected); printf("Starting Camera %d \n",cameraSelected ); // starting camera 1 int h = 240; int w = 320; int t=0; cvcamSetProperty(cameraSelected,CVCAM_RNDWIDTH , &w); cvcamSetProperty(cameraSelected,CVCAM_RNDHEIGHT , &h); cvcamSetProperty(cameraSelected,CVCAM_PROP_ENABLE, &t); cvcamSetProperty(cameraSelected,CVCAM_PROP_RENDER, &t); //cvcamSetProperty(0,CVCAM_PROP_WINDOW, NULL); printf("It's working !!! \n"); //Sleep(10000); //cvcamStop(); //cvcamExit(); //printf("Camera stopped. \n"); } else { printf("No Camera selected - terminating! \n"); return false; } camimg=cvCreateImage(cvSize(camresx[resid],camresy[resid]), IPL_DEPTH_8U, 3); cvNamedWindow("cvcam", CV_WINDOW_AUTOSIZE); HWND hWnd = (HWND)cvGetWindowHandle(wincvcam); cvcamSetProperty(cameraSelected, CVCAM_PROP_WINDOW, &hWnd); cvMoveWindow(wincvcam,112,0); cvResizeWindow(wincvcam,320,240); cvcamSetProperty(cameraSelected, CVCAM_PROP_CALLBACK, grabframe); cvcamInit(); cvcamStart(); return true; }
LRESULT CALLBACK CamDlgHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static bool init; CAMOBJ * st; int tmp; st = (CAMOBJ *) actobject; if ((st==NULL)||(st->type!=OB_CAM)) return(FALSE); switch( message ) { case WM_INITDIALOG: SetDlgItemInt(hDlg,IDC_UPDATERATE,update_rate,0); SetDlgItemText(hDlg,IDC_CAMSTATUS,"0"); SetDlgItemInt(hDlg,IDC_ERROR_DIST,(int)dist_threshold,0); SetDlgItemInt(hDlg,IDC_ERROR_ANGLE,(int)angle_threshold,0); SetDlgItemInt(hDlg,IDC_THRESHOLD_TIME,threshold_time,0); SetDlgItemInt(hDlg,IDC_PT1X,(int)(PT1_xpos*100.0f),1); SetDlgItemInt(hDlg,IDC_PT1Y,(int)(PT1_ypos*100.0f),1); SetDlgItemInt(hDlg,IDC_PT2X,(int)(PT2_xpos*100.0f),1); SetDlgItemInt(hDlg,IDC_PT2Y,(int)(PT2_ypos*100.0f),1); CheckDlgButton(hDlg,IDC_AUTORESTORE,autorestore); CheckDlgButton(hDlg,IDC_SHOWLIVE,st->showlive); CheckDlgButton(hDlg,IDC_ENABLE_TRACKING,st->enable_tracking); CheckDlgButton(hDlg,IDC_TRACKFACE,st->trackface); if (st->mode==0) CheckDlgButton(hDlg,IDC_NOARCHIVE,TRUE); else if (st->mode==1) CheckDlgButton(hDlg,IDC_RECORDARCHIVE,TRUE); else if (st->mode==2) CheckDlgButton(hDlg,IDC_PLAYARCHIVE,TRUE); SetDlgItemText(hDlg,IDC_ARCHIVEFILE,st->videofilename); break; case WM_CLOSE: EndDialog(hDlg, LOWORD(wParam)); return TRUE; break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_INITCAM: lk_init(st); break; case IDC_EXITCAM: lk_exit(); break; case IDC_RESET: count = 0; break; case IDC_NOARCHIVE: lk_exit(); st->mode=0; lk_init(st); break; case IDC_RECORDARCHIVE: lk_exit(); st->mode=1; if (!strcmp(st->videofilename,"none")) { strcpy(st->videofilename,GLOBAL.resourcepath); strcat(st->videofilename,"MOVIES\\*.avi"); } if (!open_file_dlg(hDlg,st->videofilename, FT_AVI, OPEN_SAVE)) strcpy(st->videofilename,"none"); SetDlgItemText(hDlg, IDC_ARCHIVEFILE,st->videofilename); lk_init(st); break; case IDC_PLAYARCHIVE: lk_exit(); st->mode=2; if (!strcmp(st->videofilename,"none")) { strcpy(st->videofilename,GLOBAL.resourcepath); strcat(st->videofilename,"MOVIES\\*.avi"); } if (!open_file_dlg(hDlg,st->videofilename, FT_AVI, OPEN_LOAD)) strcpy(st->videofilename,"none"); SetDlgItemText(hDlg, IDC_ARCHIVEFILE,st->videofilename); lk_init(st); break; case IDC_SHOWLIVE: st->showlive=IsDlgButtonChecked(hDlg,IDC_SHOWLIVE); if (!st->showlive) cvDestroyWindow("Camera"); else { cvNamedWindow( "Camera", 1 ); cvSetMouseCallback( "Camera", on_mouse, 0 ); } break; case IDC_UPDATERATE: tmp=GetDlgItemInt(hDlg,IDC_UPDATERATE,NULL,0); if ((tmp>10)&&(tmp<1000)) update_rate=tmp; break; case IDC_AUTORESTORE: autorestore=IsDlgButtonChecked(hDlg,IDC_AUTORESTORE); break; case IDC_TRACKFACE: st->trackface=IsDlgButtonChecked(hDlg,IDC_TRACKFACE); if (st->trackface) MAX_COUNT=2; else MAX_COUNT=1; break; case IDC_ERROR_DIST: dist_threshold=(float)GetDlgItemInt(hDlg, IDC_ERROR_DIST,0,0); break; case IDC_ERROR_ANGLE: angle_threshold=(float)GetDlgItemInt(hDlg, IDC_ERROR_ANGLE,0,0); break; case IDC_THRESHOLD_TIME: threshold_time=GetDlgItemInt(hDlg, IDC_THRESHOLD_TIME,0,0); break; case IDC_PT1X: PT1_xpos=(float) GetDlgItemInt(hDlg, IDC_PT1X,0,1) / 100.0f; need_to_init=1; break; case IDC_PT1Y: PT1_ypos=(float)GetDlgItemInt(hDlg, IDC_PT1Y,0,1)/ 100.0f; need_to_init=1; break; case IDC_PT2X: PT2_xpos=(float)GetDlgItemInt(hDlg, IDC_PT2X,0,1)/ 100.0f; need_to_init=1; break; case IDC_PT2Y: PT2_ypos=(float)GetDlgItemInt(hDlg, IDC_PT2Y,0,1)/ 100.0f; need_to_init=1; break; // case IDC_NIGHTMODE: // night_mode ^= 1; // break; case IDC_AUTOINIT: need_to_init=1; break; case IDC_ENABLE_TRACKING: st->enable_tracking=IsDlgButtonChecked(hDlg,IDC_ENABLE_TRACKING); break; case IDC_SETTINGS: { int ncams = cvcamGetCamerasCount( ); // init cvcam if (ncams==0) report("no cam"); cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); //Selects the 1-st found camera cvcamInit(); cvcamGetProperty(0, CVCAM_CAMERAPROPS, NULL); // cvcamGetProperty(0, CVCAM_VIDEOFORMAT, NULL); cvcamExit(); } break; } return TRUE; break; case WM_SIZE: case WM_MOVE: update_toolbox_position(hDlg); break; return(TRUE); } return FALSE; }