亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? calibrtwocamadlg.cpp

?? 這是前段時間自己寫的一個給兩個攝像機定標的對話框程序
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
	}
	delete []p2p_InputImages;
}
}



BOOL CCalibrtwocamaDlg::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	McSetParamInt(m_Channel1, MC_ChannelState, MC_ChannelState_IDLE);
	McSetParamInt(m_Channel2, MC_ChannelState, MC_ChannelState_IDLE);
    
	// Delete the channel
    McDelete(m_Channel1);
	McDelete(m_Channel2);
	

	McCloseDriver ();
	return CDialog::DestroyWindow();
}

void CCalibrtwocamaDlg::DispCam1()
{
CRect rect;
	if (m_pCurrent1==NULL) return;
	GetDlgItem(IDC_VID1)->GetClientRect(&rect);
	CDC *pDC;
	pDC = GetDlgItem(IDC_VID1)->GetWindowDC();
	// Retrieve image size in the document
	CSize siz = rect.Size();
	int	 SizeX = m_SizeX;
	int SizeY = m_SizeY;
	int BufferPitch = m_BufferPitch;

	// Configure the bitmap info according to the image size
	m_pBitmapInfo->bmiHeader.biWidth = BufferPitch / ( m_pBitmapInfo->bmiHeader.biBitCount / 8);  // Width = Pitch(bytes) divided by the number of bytes per pixel
	m_pBitmapInfo->bmiHeader.biHeight = -SizeY ;
	
	SetStretchBltMode(pDC->GetSafeHdc(), COLORONCOLOR);
	//// Display
	StretchDIBits (pDC->GetSafeHdc(), 0, 0, siz.cx, siz.cy,
                   0, 0, SizeX, SizeY,
                   m_pCurrent1, m_pBitmapInfo, DIB_RGB_COLORS,SRCCOPY);
	//SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,siz.cx,siz.cy,0,0,0,SizeY,m_pCurrent1,m_pBitmapInfo,DIB_RGB_COLORS);

	// Advice the callback the screen refresh is terminated
	m_bScreenRefreshCompleted1 = true;

	// Display channel info on status bar
	// Retrieve the channel state
	McGetParamInt (m_Channel1, MC_ChannelState, &m_ChannelState);

	// Retrieve the frame rate
	double frameRate_Hz;
	McGetParamFloat(m_Channel1, MC_PerSecond_Fr, &frameRate_Hz);
	// Display frame rate and channel state
	m_strChannelStatus.Format("Camera 1 Frame Rate: %.2f, Channel State: %s", frameRate_Hz,
	(m_ChannelState == MC_ChannelState_ACTIVE? "ACTIVE" : "NOT ACTIVE"));		
	GetDlgItem(IDC_SHOWCM1)->SetWindowText(m_strChannelStatus);
	UpdateData();

}

void CCalibrtwocamaDlg::DispCam2()
{
CRect rect;
	if (m_pCurrent2==NULL) return;
	GetDlgItem(IDC_VID2)->GetClientRect(&rect);
	CDC *pDC;
	pDC = GetDlgItem(IDC_VID2)->GetWindowDC();
	// Retrieve image size in the document
	CSize siz = rect.Size();
	int	 SizeX = m_SizeX;
	int SizeY = m_SizeY;
	int BufferPitch = m_BufferPitch;

	// Configure the bitmap info according to the image size
	m_pBitmapInfo->bmiHeader.biWidth = BufferPitch / ( m_pBitmapInfo->bmiHeader.biBitCount / 8);  // Width = Pitch(bytes) divided by the number of bytes per pixel
	m_pBitmapInfo->bmiHeader.biHeight = -SizeY ;
	
	SetStretchBltMode(pDC->GetSafeHdc(), COLORONCOLOR);
	//// Display
	StretchDIBits (pDC->GetSafeHdc(), 0, 0, siz.cx, siz.cy,
                   0, 0, SizeX, SizeY,
                   m_pCurrent2, m_pBitmapInfo, DIB_RGB_COLORS,SRCCOPY);
	//SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,siz.cx,siz.cy,0,0,0,SizeY,m_pCurrent1,m_pBitmapInfo,DIB_RGB_COLORS);

	// Advice the callback the screen refresh is terminated
	m_bScreenRefreshCompleted2 = true;

	// Display channel info on status bar
	// Retrieve the channel state
	McGetParamInt (m_Channel2, MC_ChannelState, &m_ChannelState);

	// Retrieve the frame rate
	double frameRate_Hz;
	McGetParamFloat(m_Channel2, MC_PerSecond_Fr, &frameRate_Hz);
	// Display frame rate and channel state
	m_strChannelStatus.Format("Camera 2 Frame Rate: %.2f, Channel State: %s", frameRate_Hz,
	(m_ChannelState == MC_ChannelState_ACTIVE? "ACTIVE" : "NOT ACTIVE"));		
	GetDlgItem(IDC_SHOWCM2)->SetWindowText(m_strChannelStatus);
	UpdateData();

}

void CCalibrtwocamaDlg::OnStop() 
{
	// TODO: Add your control notification handler code here
	McSetParamInt(m_Channel1, MC_ChannelState, MC_ChannelState_IDLE);
    McSetParamInt(m_Channel2, MC_ChannelState, MC_ChannelState_IDLE);
    GetDlgItem(IDC_LEFTCA)->EnableWindow(FALSE);
    GetDlgItem(IDC_RIGHTCA)->EnableWindow(FALSE);
	GetDlgItem(IDC_SAVE)->EnableWindow(FALSE);
	GetDlgItem(IDC_BCALIA)->EnableWindow(FALSE);
	
	lfg=0;rfg=0;
	
}

void CCalibrtwocamaDlg::OnActive() 
{
	// TODO: Add your control notification handler code here
	McSetParamInt(m_Channel1, MC_ChannelState, MC_ChannelState_ACTIVE);
	McSetParamInt(m_Channel2, MC_ChannelState, MC_ChannelState_ACTIVE);
	GetDlgItem(IDC_LEFTCA)->EnableWindow(TRUE);
    GetDlgItem(IDC_RIGHTCA)->EnableWindow(TRUE);
	GetDlgItem(IDC_SAVE)->EnableWindow(TRUE);
	lfg=0;rfg=0;
	
}

void CCalibrtwocamaDlg::OnLeftca() 
{
	// TODO: Add your control notification handler code here
	// Choose the video standard
	
	DispCam1();
	McSetParamInt(m_Channel1, MC_ChannelState, MC_ChannelState_IDLE);
	
	//GetDlgItem(IDC_BCALIA)->EnableWindow(FALSE);
	m_nLeftCamNo++;
	UpdateData();
	lfg=1;rfg=0;
		
    
}

void CCalibrtwocamaDlg::OnRightca() 
{
	// TODO: Add your control notification handler code here
	
	DispCam2();
	McSetParamInt(m_Channel2, MC_ChannelState, MC_ChannelState_IDLE);
	//GetDlgItem(IDC_BCALIA)->EnableWindow(FALSE);
	m_nRightCamNO++;
	UpdateData();
	rfg=1;lfg=0;
	
}

void CCalibrtwocamaDlg::OnSave() 
{
	// TODO: Add your control notification handler code here
	BITMAPFILEHEADER bmfHdr; // Header for Bitmap file
	WORD hdLength = sizeof(BITMAPINFOHEADER);
	CFile *pFile;
	pFile = new CFile;
	CString strFile;
	char buffer[5];
	// Fill in file type (first 2 bytes must be "BM" for a bitmap) 
	bmfHdr.bfType = 0x4d42;  // "BM"
	// Calculate the file size by adding the DIB size to sizeof(BITMAPFILEHEADER)
	bmfHdr.bfSize = m_SizeX*m_SizeY*3 + sizeof(BITMAPFILEHEADER);
	bmfHdr.bfReserved1 = 0;
	bmfHdr.bfReserved2 = 0;
	bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + m_pBitmapInfo->bmiHeader.biSize;
	TRY{
		if (lfg==1&&rfg==0)	
		{
			strFile="..\\CaliData\\leftcap";
			strFile=strFile+::itoa(m_nLeftCamNo,buffer,10)+".bmp";
			//strcpy(PathName,"..\\CaliData\\leftcap"+::itoa(m_nLeftCamNo,buffer,10)+".bmp");
            pFile->Open(strFile,CFile::modeCreate | CFile::modeWrite);	
			// Write the file header
			pFile->Write((BYTE*)&bmfHdr, sizeof(BITMAPFILEHEADER));
			// Write the DIB header
			pFile->Write(m_pBitmapInfo, hdLength);
			// pFile->Write((BYTE*)(m_pBitmapInfo->bmiHeader), hdLength);
			// Write the DIB bits
			pFile->Write(m_pCurrent1, m_SizeX*m_SizeY*3);
			pFile->Close();
		}
		else if(lfg==0&&rfg==1)
		{
			strFile="..\\CaliData\\rightcap";
			strFile=strFile+::itoa(m_nLeftCamNo,buffer,10)+".bmp";
			//strcpy(PathName,"..\\CaliData\\rightcap"+::itoa(m_nLeftCamNo,buffer,10)+".bmp");
			pFile->Open(strFile,CFile::modeCreate | CFile::modeWrite);	
			// Write the file header
			pFile->Write((BYTE*)&bmfHdr, sizeof(BITMAPFILEHEADER));
			// Write the DIB header
			pFile->Write(m_pBitmapInfo, hdLength);
			// pFile->Write((BYTE*)(m_pBitmapInfo->bmiHeader), hdLength);
			// Write the DIB bits
			pFile->Write(m_pCurrent2, m_SizeX*m_SizeY*3);
			pFile->Close();
		}
		lfg=0;	rfg=0;	
		
			
		}
	CATCH (CFileException, e) {
			AfxMessageBox("Write error--possible disk full condition");        
		}
		END_CATCH
	
			
	
	delete pFile;
	
		//GetDlgItem(IDC_BCALIA)->EnableWindow(TRUE);
	
		
}


void CCalibrtwocamaDlg::OnLoadSelected() 
{
	// TODO: Add your control notification handler code here
	CFileDialog dlg	(TRUE,
		"*.*",
		"*.*",
		OFN_FILEMUSTEXIST | 
		OFN_HIDEREADONLY |
		OFN_ALLOWMULTISELECT ,
		"All Files (*.*)|*.*|BMP Files (*.bmp)|*.bmp|JPG Files (*.jpg)|*.jpg|TIFF Files (*.tif;*.tiff)|*.tif; *.tiff||",
		this);
	
	char * buffer = new char[2000];
	
	for(int i=0; i<2000; i++)
	{
		buffer[i]=0;
	}
	
	dlg.m_ofn.lpstrTitle = "Open File...";
	dlg.m_ofn.lpstrFile  = buffer;
	dlg.m_ofn.nMaxFile  = 2000;
	
	if (dlg.DoModal () == IDCANCEL){
		delete []buffer; buffer = NULL;
		return;
	}
	
	CString tempFileName,tmfname; 
	
	POSITION pos = dlg.GetStartPosition();
	
	int counter = 0;
	while(true)
	{
		if( pos != NULL )
		{
			tempFileName = dlg.GetNextPathName(pos);
			counter ++;
			tmfname=dlg.GetFileName();
			if (tmfname.Left(4)=="left")
				califlag="left";
			else if(tmfname.Left(5)=="right")
				califlag="right";
			else
				califlag="";
		}
		else break;
	}
	
	m_nImageNumber = counter;
	
	p2p_InputImages  = new IplImage *[m_nImageNumber];
	
	delete []m_cstrImageNames;
	m_cstrImageNames = new CString   [m_nImageNumber];
	
	pos = dlg.GetStartPosition();
	for(  i=0 ; i<counter; i++)
	{
		if( pos != NULL )
		{
			tempFileName = dlg.GetNextPathName(pos);
			p2p_InputImages[i]  = cvvLoadImage (tempFileName);
			
			if( i==0 )
			{
				m_ImageRoot.path  = tempFileName;
				m_ImageRoot.GenerateFileProps();
				imgsize.width  = p2p_InputImages[0]->width;
				imgsize.height = p2p_InputImages[0]->height;
			}
			
			m_cstrImageNames[i] = tempFileName.Right(tempFileName.GetLength()-tempFileName.ReverseFind('\\')-1);
			
		}
	}
	
	m_nImageNumber=counter;
	UpdateData(false);
	delete []buffer; buffer = NULL;
}

void CCalibrtwocamaDlg::OnLoad() 
{
	// TODO: Add your control notification handler code here
	// get the number of images to process from the "Number of Images" box
	UpdateData();
	if( m_nImageNumber == 0 || m_nXHeight == 0 || m_nXWidth == 0)
		return;
	
	///Get root file name that will be used to generate 5 filenames of the images
	CFileDialog dlg	(TRUE,
		"*.bmp",
		"*.*",
		OFN_FILEMUSTEXIST | 
		OFN_HIDEREADONLY,
		"BMP Files (*.bmp)|*.bmp|JPG Files (*.jpg)|*.jpg|TIFF Files (*.tif;*.tiff)|*.tif; *.tiff|All Files (*.*)|*.*||",
		this);
	
	dlg.m_ofn.lpstrTitle = "Open File...";
	dlg.m_ofn.lpstrInitialDir="H:\\";
	
	if (dlg.DoModal () == IDCANCEL)
	{
		return;
	}
	
	CString tempString,tmfname;
    tmfname=dlg.GetFileName();
	if (tmfname.Left(4)=="left")
		califlag="left";
	else if(tmfname.Left(5)=="right")
		califlag="right";
	else
		califlag="";
	
	m_ImageRoot.path  = dlg.GetPathName ();
	m_ImageRoot.GenerateFileProps();
	
	// form the root names....
	m_ImageRoot.title = m_ImageRoot.title.Left(m_ImageRoot.title.GetLength()-1);
	m_ImageRoot.name  = m_ImageRoot.title + '.' + m_ImageRoot.extension;
	m_ImageRoot.path  = m_ImageRoot.folderPath + '\\' + m_ImageRoot.name;
	
	char buffer[5];
	
	p2p_InputImages  = new IplImage *[m_nImageNumber];
	delete []m_cstrImageNames; m_cstrImageNames = NULL;
	m_cstrImageNames = new CString   [m_nImageNumber];
	
	// load images as IplImage*'s  
	for( int i=0; i<m_nImageNumber; i++)
	{
		::itoa(i,buffer,10);
		tempString = m_ImageRoot.folderPath
			+'\\'
			+m_ImageRoot.title 
			+buffer 
			+"." 
			+m_ImageRoot.extension;
		
		m_cstrImageNames[i] =m_ImageRoot.title+buffer+"."+m_ImageRoot.extension;
		
		p2p_InputImages[i]  = cvvLoadImage (tempString);
		
		if( i==0 )
		{
			imgsize.width  = p2p_InputImages[0]->width;
			imgsize.height = p2p_InputImages[0]->height;
		}
	}
	
}

void CCalibrtwocamaDlg::OnCalibrate() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	
	if( m_nImageNumber == 0 )
		return;
	
	m_nNumCorners = m_nXHeight*m_nXWidth;
	
	// Extract World and Image Coordinates
	FindCorners(); 
	
	// Find CameraMatrix, Distortion Params, Rotation Matrices, Translation Vectors
	CalibrateCamera();
	
	// Backproject Points and Calculate Errors on X and Y direction
	CalculateCalibrationErrors( true );
	
	// Generates Reports concerning Calibration and Error
	GenerateReport();
	
	// Displays Results.
	DisplayReport();
	
}

void CCalibrtwocamaDlg::FindCorners()
{

	m_nNumCorners = m_nXWidth * m_nXHeight;

	IplImage* img  = 0; // initialize some image arrays
	IplImage* img0 = 0;
	IplImage* img1 = 0;
	IplImage* greyimg = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久热成人在线视频| 欧美在线免费观看亚洲| 国产精品综合二区| 精油按摩中文字幕久久| 老司机精品视频在线| 日韩在线一二三区| 青青青爽久久午夜综合久久午夜| 亚洲午夜电影在线观看| 亚洲二区视频在线| 手机精品视频在线观看| 日本不卡1234视频| 免费观看在线综合| 激情五月播播久久久精品| 国产剧情一区在线| 国产91高潮流白浆在线麻豆 | 久久国产日韩欧美精品| 欧美aaaaaa午夜精品| 老色鬼精品视频在线观看播放| 美女看a上一区| 国产精品一区免费视频| 成人久久视频在线观看| 91丝袜高跟美女视频| 在线视频一区二区三| 欧美一区二区三区四区在线观看| 日韩欧美综合在线| 久久久久国产精品麻豆| 国产精品久久久久久久久图文区 | 国产精品亚洲人在线观看| 国产+成+人+亚洲欧洲自线| 91丨国产丨九色丨pron| 欧美日韩一级大片网址| 精品美女一区二区三区| 国产精品入口麻豆原神| 亚洲综合色在线| 麻豆国产91在线播放| 国产成人免费av在线| 99精品国产热久久91蜜凸| 欧美丝袜自拍制服另类| 精品国产第一区二区三区观看体验 | 色悠悠亚洲一区二区| 欧美另类变人与禽xxxxx| 久久在线免费观看| 亚洲男人天堂一区| 久久av中文字幕片| 91麻豆自制传媒国产之光| 91精品国产乱| 亚洲欧洲性图库| 日韩精品电影一区亚洲| 成人三级在线视频| 欧美一区二区视频在线观看| 国产欧美一区二区精品性色 | 一本久久a久久免费精品不卡| 日韩视频在线观看一区二区| 综合久久给合久久狠狠狠97色| 奇米影视一区二区三区| kk眼镜猥琐国模调教系列一区二区| 欧美日韩三级一区二区| 中文字幕av一区 二区| 日韩国产高清影视| av激情综合网| 久久久亚洲国产美女国产盗摄 | 偷拍与自拍一区| 成人一二三区视频| 欧美mv和日韩mv国产网站| 伊人色综合久久天天| 国产大陆精品国产| 欧美一区二区三区不卡| 亚洲四区在线观看| 国产成人免费视频一区| 日韩一区二区精品| 一区二区欧美精品| 99这里只有久久精品视频| 精品国产a毛片| 日韩成人午夜精品| 欧美在线播放高清精品| 国产精品久久影院| 国产精品一线二线三线精华| 4438x亚洲最大成人网| 亚洲一区影音先锋| 99久久精品免费看国产免费软件| wwww国产精品欧美| 麻豆一区二区在线| 538prom精品视频线放| 亚洲一级不卡视频| 日本韩国一区二区三区| 成人欧美一区二区三区黑人麻豆| 国产成人在线观看免费网站| 精品国产乱码久久久久久影片| 日韩不卡在线观看日韩不卡视频| 欧美亚洲一区二区三区四区| 亚洲人成人一区二区在线观看| 国产精品99久久久久久久女警 | 中文一区在线播放| 国产a精品视频| 国产网红主播福利一区二区| 国产乱妇无码大片在线观看| 精品国产免费人成电影在线观看四季 | 亚洲国产成人av| 日本韩国视频一区二区| 亚洲美女少妇撒尿| 91在线你懂得| 亚洲免费在线视频一区 二区| 成人亚洲一区二区一| 国产精品三级av在线播放| 成人h版在线观看| 一色桃子久久精品亚洲| 色综合天天综合狠狠| 亚洲最大成人综合| 欧美日韩国产天堂| 麻豆一区二区三| 久久视频一区二区| 国产成人高清在线| 亚洲欧美日韩一区| 欧美日韩精品电影| 免播放器亚洲一区| 国产色91在线| 91免费在线视频观看| 亚洲一二三四在线观看| 91麻豆精品国产91久久久更新时间| 日韩国产欧美视频| 久久这里只有精品6| av不卡在线播放| 亚洲高清免费视频| 精品成人私密视频| 99久久精品国产观看| 亚洲视频网在线直播| 欧美性受极品xxxx喷水| 日日夜夜精品免费视频| 日韩欧美国产综合一区| 美女网站在线免费欧美精品| 精品99久久久久久| 春色校园综合激情亚洲| 国产精品区一区二区三| 国产精品亚洲专一区二区三区| 日韩伦理免费电影| 欧美三级日韩三级| 久久国产精品一区二区| 久久九九久精品国产免费直播| av不卡一区二区三区| 亚洲国产日韩精品| 精品国产伦一区二区三区观看方式| 国产一区二区三区免费播放| 欧美日韩不卡一区二区| 国产自产视频一区二区三区| 中文字幕欧美区| 欧美自拍丝袜亚洲| 日韩影院在线观看| 日本一区二区成人| 91福利视频在线| 另类中文字幕网| 国产精品素人一区二区| gogo大胆日本视频一区| 蜜桃视频免费观看一区| 久久久午夜电影| 91久久国产综合久久| 日本不卡免费在线视频| 中文一区二区完整视频在线观看| 日本丰满少妇一区二区三区| 三级一区在线视频先锋 | 欧美日韩亚洲综合一区| 国产999精品久久| 亚洲国产精品久久人人爱蜜臀 | 亚洲不卡一区二区三区| 51午夜精品国产| 一本在线高清不卡dvd| 日韩精品视频网站| 国产精品三级av| 3d成人动漫网站| 欧美亚洲综合色| 国产不卡视频一区| 日本成人在线看| 亚洲欧美日韩系列| 国产精品色哟哟| 精品少妇一区二区三区| 欧美在线免费播放| 国产suv一区二区三区88区| 另类成人小视频在线| 亚洲综合久久久久| 国产蜜臀97一区二区三区| 91麻豆精品久久久久蜜臀| 色狠狠一区二区| 国产精品一级黄| 天使萌一区二区三区免费观看| 欧美激情在线一区二区三区| 精品视频免费在线| 在线看一区二区| 国产成人精品免费在线| 丝袜国产日韩另类美女| 国产欧美一二三区| 久久久久久一级片| 宅男在线国产精品| 91福利在线导航| 在线观看av不卡| 天天色天天操综合| 亚洲二区视频在线| 午夜激情久久久| 一区二区三区欧美激情| 亚洲欧洲无码一区二区三区| 国产精品欧美综合在线| 亚洲精品一区二区三区四区高清|