visionview.cpp

来自「FIRA 3对3 机器人足球PC端控制程序。」· C++ 代码 · 共 2,092 行 · 第 1/5 页

CPP
2,092
字号
				index_lut = ((r<<16) + (g<<8) + b);
			
				y = (int)(299*r + 587*g + 114*b);
				y = min(255000,max(y,0));
				u = (int)(565*(1000*b-y) + 128000000)/1000000;
				u = min(255,max(u,0));
				v = (int)(713*(1000*r-y) + 128000000)/1000000;
				v = min(255,max(v,0));
				y /= 1000;
										
				if(y >= BallColor[0] && y <= BallColor[1] && u >= BallColor[2] && u <= BallColor[3] && v >= BallColor[4] && v <= BallColor[5]) 					
					LUTcolor[index_lut] = BALL_COLOR;
				else if(y >= TeamColor[0] && y <= TeamColor[1] && u >= TeamColor[2] && u <= TeamColor[3] && v >= TeamColor[4] && v <= TeamColor[5]) 					 
					LUTcolor[index_lut] = TEAM_COLOR;
				else if(y >= IdColor[0][0] && y <= IdColor[0][1] && u >= IdColor[0][2] && u <= IdColor[0][3] && v >= IdColor[0][4] && v <= IdColor[0][5]) 					 
					LUTcolor[index_lut] = ID1_COLOR;
/////////////////////////////////////////////////
// Choi.W.H  2000.02.18 
				else if(y >= IdColor[1][0] && y <= IdColor[1][1] && u >= IdColor[1][2] && u <= IdColor[1][3] && v >= IdColor[1][4] && v <= IdColor[1][5]) 					 
					LUTcolor[index_lut] = ID2_COLOR;
				else if(y >= IdColor[2][0] && y <= IdColor[2][1] && u >= IdColor[2][2] && u <= IdColor[2][3] && v >= IdColor[2][4] && v <= IdColor[2][5]) 					 
					LUTcolor[index_lut] = ID3_COLOR;
// Choi.W.H  2000.02.18
// //////////////////////////////////////////////
				else if( (bFlagFindOpponent[OPP1] || bFlagFindOpponent[OPP2] || bFlagFindOpponent[OPP3]) // || bFlagFindOpponent[OPP4] || bFlagFindOpponent[OPP5])  
						&& y >= OpponentColor[0] && y <= OpponentColor[1] && u >= OpponentColor[2] && u <= OpponentColor[3] && v >= OpponentColor[4] && v <= OpponentColor[5])
					LUTcolor[index_lut] = OPPONENT_COLOR;
				else
					LUTcolor[index_lut] = NONE_COLOR;
		}

}


// --------------------------------------------------------
// Param  : none
// Return : none
// Remark : cfg 历厘窍扁
// --------------------------------------------------------
void CVisionView::OnSaveConfiguration() 
{
	// TODO: Add your control notification handler code here
	if(bPlay)
		return;	

	//KillTimer(1);
	MdigHalt(MilDigitizerId);
		
	FILE *fp; 
	short i;

	UpdateData(TRUE);

	CFileDialog FileDlg(FALSE, "cfg", "default", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		"CFG files(*.cfg)|*.cfg|All files(*.*)|*.*||", this);

	if(FileDlg.DoModal() == IDOK)
	{                                 
		if((fp = fopen((const char *)FileDlg.GetPathName(), "w")) == NULL)
			MessageBox("File Open Error");
		else {
			fprintf(fp, "%d ", rectBoundary.top);
			fprintf(fp, "%d ", rectBoundary.left);
			fprintf(fp, "%d ", rectBoundary.bottom);
			fprintf(fp, "%d ", rectBoundary.right);   
			fprintf(fp,"\n");

			fprintf(fp, "%d ",LowerBoundOfBallSize);
			fprintf(fp, "%d ",UpperBoundOfBallSize);
			fprintf(fp, "%d ",LowerBoundOfBigTeamSize);
			fprintf(fp, "%d ",UpperBoundOfBigTeamSize);
			fprintf(fp, "%d ",LowerBoundOfSmallIDSize);
			fprintf(fp, "%d ",UpperBoundOfSmallIDSize);
			fprintf(fp, "%d ",LowerBoundOfOpponentSize);
			fprintf(fp, "%d\n",UpperBoundOfOpponentSize);
			fprintf(fp, "%d\n",DistanceBetweenBigTeamAndSmallID);

			for(i = 0;i < 6;i++)
				fprintf(fp, "%d ", BallColor[i]);			
			fprintf(fp,"\n"); 
			for(i = 0;i < 6;i++)
				fprintf(fp, "%d ", TeamColor[i]);			
			fprintf(fp,"\n");
			for(i = 0;i < 6;i++)
				fprintf(fp, "%d ", IdColor[0][i]);			
			fprintf(fp,"\n");
/////////////////////////////////////////////////
// Choi.W.H  2000.02.18 
			for(i = 0;i < 6;i++)
				fprintf(fp, "%d ", IdColor[1][i]);			
			fprintf(fp,"\n");
			for(i = 0;i < 6;i++)
				fprintf(fp, "%d ", IdColor[2][i]);			
			fprintf(fp,"\n");
// Choi.W.H  2000.02.18
// //////////////////////////////////////////////
			for(i = 0;i < 6;i++)
				fprintf(fp, "%d ", OpponentColor[i]);			
			fprintf(fp,"\n");

			fprintf(fp, "%d ", m_bFlagFindBall);     
			fprintf(fp, "%d ", m_bFlagFindHome1);     
			fprintf(fp, "%d ", m_bFlagFindHome2);     
//			fprintf(fp, "%d ", m_bFlagFindHome3);     
//			fprintf(fp, "%d ", m_bFlagFindHome4);     
			fprintf(fp, "%d ", m_bFlagFindHgoalie);     
			fprintf(fp, "%d ", m_bFlagFindOpponent1);     
			fprintf(fp, "%d ", m_bFlagFindOpponent2);     
			fprintf(fp, "%d ", m_bFlagFindOpponent3);     
//			fprintf(fp, "%d ", m_bFlagFindOpponent4);     
//			fprintf(fp, "%d ", m_bFlagFindOpponent5);     

//          措盔 Color TUNNING*******************************
			Ref_Hue = ColorParameter[0] ;
		    Ref_Saturation = ColorParameter[1];
		    Ref_Contrast = ColorParameter[2] ;
		    Ref_Brightness = ColorParameter[3] ;
			fprintf(fp, "%d ", Ref_Hue);
			fprintf(fp, "%d ", Ref_Saturation);
			fprintf(fp, "%d ", Ref_Contrast);
			fprintf(fp, "%d ", Ref_Brightness);
//**************************************************     
			fprintf(fp,"\n");
			fprintf(fp, "%d ", bFlagIsOurHomeLeft);
		}
		
		fclose(fp);	
	}

	MdigGrabContinuous(MilDigitizerId, MilImageBufferId);

	Invalidate();
}


// --------------------------------------------------------
// Param  : none
// Return : none
// Remark : 祸 裹困 犁炼沥窍扁 
// --------------------------------------------------------
void CVisionView::OnChangeColor() 
{
	// TODO: Add your control notification handler code here
	if(bPlay)
		return;	

	//KillTimer(1);
	
	// Initialize values of SetColor Dialog
	ptrSetColor->bSetColor = FALSE;
	InitSetColorDlg();
	
	if(ptrSetColor->DoModal() == IDOK)
		SetColorUpdate();
}


// --------------------------------------------------------
// Param  : none
// Return : none
// Remark : 祸 裹困 炼沥 困茄 措拳芒 檬扁拳
// --------------------------------------------------------
void CVisionView::InitSetColorDlg()
{
	short i;

	ptrSetColor->m_nSelectedColor = 0;
	ptrSetColor->MilDisplayId = MilDisplayId;
	ptrSetColor->MilDigitizerId = MilDigitizerId;
	ptrSetColor->MilImageBufferId = MilImageBufferId;
	ptrSetColor->DispSizeX = DispSizeX;
	ptrSetColor->DispSizeY = DispSizeY;
	ptrSetColor->pImageBuffer = ImageBuffer;
	ptrSetColor->m_bBlackBackground = TRUE;

	//khs MdispControl(MilDisplayId, M_WINDOW_COLOR, M_ENABLE);

	if(ptrSetColor->bSetColor == TRUE){
		ptrSetColor->nRmin_init = Rmin;
		ptrSetColor->nRmax_init = Rmax;
		ptrSetColor->nGmin_init = Gmin;
		ptrSetColor->nGmax_init = Gmax;
		ptrSetColor->nBmin_init = Bmin;
		ptrSetColor->nBmax_init = Bmax;
	}
	else{
		ptrSetColor->nRmin_init = BallColor[0];
		ptrSetColor->nRmax_init = BallColor[1];
		ptrSetColor->nGmin_init = BallColor[2];
		ptrSetColor->nGmax_init = BallColor[3];
		ptrSetColor->nBmin_init = BallColor[4];
		ptrSetColor->nBmax_init = BallColor[5];
	}

	for(i = 0; i < 6; i++) {
		ptrSetColor->ballcolor[i] = BallColor[i];
		ptrSetColor->teamcolor[i] = TeamColor[i];
		ptrSetColor->idcolor[0][i] = IdColor[0][i];
/////////////////////////////////////////////////
// Choi.W.H  2000.02.18 
		ptrSetColor->idcolor[1][i] = IdColor[1][i];
		ptrSetColor->idcolor[2][i] = IdColor[2][i];
// Choi.W.H  2000.02.18
// //////////////////////////////////////////////
		ptrSetColor->opponentcolor[i] = OpponentColor[i];
	}

}


// --------------------------------------------------------
// Param  : none
// Return : none
// Remark : 祸 炼沥 措拳芒狼 祸 裹困 馆康窍扁
// --------------------------------------------------------
void CVisionView::SetColorUpdate()
{
	switch(ptrSetColor->m_nSelectedColor)
	{
	case 0 :
		{
			BallColor[0] = atoi((const char *)(ptrSetColor->m_sRmin));
			BallColor[1] = atoi((const char *)(ptrSetColor->m_sRmax));
			BallColor[2] = atoi((const char *)(ptrSetColor->m_sGmin));
			BallColor[3] = atoi((const char *)(ptrSetColor->m_sGmax));
			BallColor[4] = atoi((const char *)(ptrSetColor->m_sBmin));
			BallColor[5] = atoi((const char *)(ptrSetColor->m_sBmax));
			UpdateLUTcolor(BallColor, BALL_COLOR);
			break;
		}
	case 1 :
		{	
			TeamColor[0] = atoi((const char *)(ptrSetColor->m_sRmin));
			TeamColor[1] = atoi((const char *)(ptrSetColor->m_sRmax));
			TeamColor[2] = atoi((const char *)(ptrSetColor->m_sGmin));
			TeamColor[3] = atoi((const char *)(ptrSetColor->m_sGmax));
			TeamColor[4] = atoi((const char *)(ptrSetColor->m_sBmin));
			TeamColor[5] = atoi((const char *)(ptrSetColor->m_sBmax));
			UpdateLUTcolor(TeamColor, TEAM_COLOR);
			break;
		}
	case 2 :
		{
			IdColor[0][0] = atoi((const char *)(ptrSetColor->m_sRmin));
			IdColor[0][1] = atoi((const char *)(ptrSetColor->m_sRmax));
			IdColor[0][2] = atoi((const char *)(ptrSetColor->m_sGmin));
			IdColor[0][3] = atoi((const char *)(ptrSetColor->m_sGmax));
			IdColor[0][4] = atoi((const char *)(ptrSetColor->m_sBmin));
			IdColor[0][5] = atoi((const char *)(ptrSetColor->m_sBmax));
			UpdateLUTcolor(IdColor[0], ID1_COLOR);
			break;
		}
/////////////////////////////////////////////////
// Choi.W.H  2000.02.18 
	case 3 :
		{
			IdColor[1][0] = atoi((const char *)(ptrSetColor->m_sRmin));
			IdColor[1][1] = atoi((const char *)(ptrSetColor->m_sRmax));
			IdColor[1][2] = atoi((const char *)(ptrSetColor->m_sGmin));
			IdColor[1][3] = atoi((const char *)(ptrSetColor->m_sGmax));
			IdColor[1][4] = atoi((const char *)(ptrSetColor->m_sBmin));
			IdColor[1][5] = atoi((const char *)(ptrSetColor->m_sBmax));
			UpdateLUTcolor(IdColor[1], ID2_COLOR);
			break;
		}
	case 4 :
		{
			IdColor[2][0] = atoi((const char *)(ptrSetColor->m_sRmin));
			IdColor[2][1] = atoi((const char *)(ptrSetColor->m_sRmax));
			IdColor[2][2] = atoi((const char *)(ptrSetColor->m_sGmin));
			IdColor[2][3] = atoi((const char *)(ptrSetColor->m_sGmax));
			IdColor[2][4] = atoi((const char *)(ptrSetColor->m_sBmin));
			IdColor[2][5] = atoi((const char *)(ptrSetColor->m_sBmax));
			UpdateLUTcolor(IdColor[2], ID3_COLOR);
			break;
		}
// Choi.W.H  2000.02.18
// //////////////////////////////////////////////
	default :	// opponent color
		{
			OpponentColor[0] = atoi((const char *)(ptrSetColor->m_sRmin));
			OpponentColor[1] = atoi((const char *)(ptrSetColor->m_sRmax));
			OpponentColor[2] = atoi((const char *)(ptrSetColor->m_sGmin));
			OpponentColor[3] = atoi((const char *)(ptrSetColor->m_sGmax));
			OpponentColor[4] = atoi((const char *)(ptrSetColor->m_sBmin));
			OpponentColor[5] = atoi((const char *)(ptrSetColor->m_sBmax));
			UpdateLUTcolor(OpponentColor, OPPONENT_COLOR);
			break;
		}
	}
}


// --------------------------------------------------------
// Param  : none
// Return : none
// Remark : 傍, 权 肺嚎, 惑措 肺嚎 阿阿阑 茫阑 瘤 咯何 搬沥窍扁
// --------------------------------------------------------

void CVisionView::OnFlagFindBall() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bFlagFindBall)
		bFlagFindBall = TRUE;
	else
		bFlagFindBall = FALSE;
	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindHome1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bFlagFindHome1)
		bFlagFindHomeRobot[HOME1] = TRUE;
	else
		bFlagFindHomeRobot[HOME1] = FALSE;
	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindHome2() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bFlagFindHome2)
		bFlagFindHomeRobot[HOME2] = TRUE;
	else
		bFlagFindHomeRobot[HOME2] = FALSE;
	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindHome3() 
{
	// TODO: Add your control notification handler code here
//	UpdateData(TRUE);
//	if(m_bFlagFindHome3)
//		bFlagFindHomeRobot[HOME3] = TRUE;
//	else
//		bFlagFindHomeRobot[HOME3] = FALSE;
//	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindHome4() 
{
	// TODO: Add your control notification handler code here
//	UpdateData(TRUE);
//	if(m_bFlagFindHome4)
//		bFlagFindHomeRobot[HOME4] = TRUE;
//	else
//		bFlagFindHomeRobot[HOME4] = FALSE;
//	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindHgoalie() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bFlagFindHgoalie)
		bFlagFindHomeRobot[HGOALIE] = TRUE;
	else
		bFlagFindHomeRobot[HGOALIE] = FALSE;
	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindOpponent1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bFlagFindOpponent1)
		bFlagFindOpponent[OPP1] = TRUE;
	else
		bFlagFindOpponent[OPP1] = FALSE;
	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindOpponent2() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bFlagFindOpponent2)
		bFlagFindOpponent[OPP2] = TRUE;
	else
		bFlagFindOpponent[OPP2] = FALSE;
	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindOpponent3() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bFlagFindOpponent3)
		bFlagFindOpponent[OPP3] = TRUE;
	else
		bFlagFindOpponent[OPP3] = FALSE;
	UpdateData(FALSE);
}


// --------------------------------------------------------
void CVisionView::OnFlagFindOpponent4() 
{
	// TODO: Add your control notification handler code here

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?