//#include <videoInput.h>
int Job1()
{
	//CvCapture* captureR = cvCreateCameraCapture( 1);
	//CvCapture* captureL = cvCreateCameraCapture( 2 );
	//CvCapture* captureR = cvCreateCameraCapture(CV_CAP_DSHOW);
    //CvCapture* captureL = cvCreateCameraCapture(CV_CAP_DSHOW + 2);
	//videoInput VI;  
	//int numDevices = VI.listDevices();   

    CvCapture* captureL =cvCaptureFromCAM(1); 
	cvWaitKey(100000);
	CvCapture* captureR =cvCaptureFromCAM(0);
	cvWaitKey(100000);

	//Camera Setting
	int w = 320, h = 240;
	cvSetCaptureProperty ( captureL, CV_CAP_PROP_FRAME_WIDTH,  w );  
	cvSetCaptureProperty ( captureL, CV_CAP_PROP_FRAME_HEIGHT, h );
	cvSetCaptureProperty ( captureR, CV_CAP_PROP_FRAME_WIDTH,  w );  
	cvSetCaptureProperty ( captureR, CV_CAP_PROP_FRAME_HEIGHT, h );

	cvNamedWindow( "Camera_L", CV_WINDOW_AUTOSIZE );
	cvNamedWindow( "Camera_R", CV_WINDOW_AUTOSIZE );
	cvNamedWindow( "Segmentation", CV_WINDOW_AUTOSIZE );
	cvNamedWindow( "Disparity", CV_WINDOW_AUTOSIZE );

	//Image buffer
	IplImage *imgL_O, *imgL;
	IplImage *imgR_O, *imgR;

	//segmentation setting
	FastSegmentation Z;
	Z.setting(0,h ,w, 1, 13, 13, 1,6);
	//Depth Setting
	Depth Y;
	Y.setting(h, w, 1, 13, 13, 1, 1, 0);
	Y.ROI(80,150,50,300);
	Y.SMask=Z.FilterMap;

	//debug
	IplImage *Zmap = cvCreateImage(cvSize(Z.width_R,Z.height_R),8,3);
	IplImage *Dmap = cvCreateImage(cvSize(Y.width_R,Y.height_R),8,1);
	
	while(true)
	{
		if( !(imgL= cvQueryFrame(captureL)) ) 
		{
			//printf("\n #Error(Panel_Display):READ_IMAGE_FAIL L"); 
			//getchar();
			//exit(-1);
			continue;
		}

		if( !(imgR= cvQueryFrame(captureR)) ) 
		{
			//printf("\n #Error(Panel_Display):READ_IMAGE_FAIL R"); 
			//getchar();
			//exit(-1);
			continue;
		}
		unsigned char* srcL=(unsigned char* )imgL->imageData;
		unsigned char* srcR=(unsigned char* )imgR->imageData;

		//Z.setting(srcL,h ,w, 1, 13, 13, 1,6);
		Z.Img=srcL;
		Z.filtering();
		Z.clustering2();

		Y.SMask=Z.FilterMap;
		Y.clusters=Z.clusters;
	    Y.ClusterNum=Z.ClusterNum;
        Y.update(srcL,srcR);

		cvShowImage( "Camera_L", imgL );
		cvShowImage( "Camera_R", imgR );
		Zmap->imageData=(char*)Z.FilterMap;
		cvShowImage( "Segmentation", Zmap );
		Dmap->imageData=(char*)Y.DisparityMap;
		cvShowImage( "Disparity", Dmap );

		int key = cvWaitKey(30);
		if( key == 27 ){
			cvSaveImage("L.bmp",imgL, 0);
			cvSaveImage("R.bmp",imgR, 0);
			break;
		}
	}

	cvReleaseCapture( &captureL );
	cvReleaseCapture( &captureR );
	cvDestroyWindow( "Camera_L" );
	cvDestroyWindow( "Camera_R" );

	return 0;
}