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 + -
显示快捷键?