visionview-1.cpp
来自「FIRA 3对3 机器人足球PC端控制程序。」· C++ 代码 · 共 2,053 行 · 第 1/5 页
CPP
2,053 行
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];
// ptrSetColor->idcolor[1][i] = IdColor[1][i];
// ptrSetColor->idcolor[2][i] = IdColor[2][i];
ptrSetColor->opponentcolor[i] = OpponentColor[i];
}
}
// 祸 炼沥 措拳芒狼 祸 裹困 馆康窍扁
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;
}
/* 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;
}
*/ 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;
}
}
}
// 傍, 权 肺嚎, 惑措 肺嚎 阿阿阑 茫阑 瘤 咯何 搬沥窍扁
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
// UpdateData(TRUE);
// if(m_bFlagFindOpponent4)
// bFlagFindOpponent[OPP4] = TRUE;
// else
// bFlagFindOpponent[OPP4] = FALSE;
// UpdateData(FALSE);
}
void CVisionView::OnFlagFindOpponent5()
{
// TODO: Add your control notification handler code here
// UpdateData(TRUE);
// if(m_bFlagFindOpponent5)
// bFlagFindOpponent[OPP5] = TRUE;
// else
// bFlagFindOpponent[OPP5] = FALSE;
// UpdateData(FALSE);
}
// 农扁 鞘磐傅阑 困秦 侨伎 农扁 烙拌蔼 沥窍扁
void CVisionView::OnSetPixelSize()
{
// TODO: Add your control notification handler code here
if(bPlay)
return;
//KillTimer(1);
CSetPixelSize dlg;
dlg.nLBoundBallSize = LowerBoundOfBallSize;
dlg.nUBoundBallSize = UpperBoundOfBallSize;
dlg.nLBoundBigTeamSize = LowerBoundOfBigTeamSize;
dlg.nUBoundBigTeamSize = UpperBoundOfBigTeamSize;
dlg.nLBoundSmallIDSize = LowerBoundOfSmallIDSize;
dlg.nUBoundSmallIDSize = UpperBoundOfSmallIDSize;
dlg.nLBoundOpponentSize = LowerBoundOfOpponentSize;
dlg.nUBoundOpponentSize = UpperBoundOfOpponentSize;
dlg.nDefLBoundBallSize = DEF_LBOUND_BALL_SIZE;
dlg.nDefUBoundBallSize = DEF_UBOUND_BALL_SIZE;
dlg.nDefLBoundBigTeamSize = DEF_LBOUND_BIG_TEAM_SIZE;
dlg.nDefUBoundBigTeamSize = DEF_UBOUND_BIG_TEAM_SIZE;
dlg.nDefLBoundSmallIDSize = DEF_LBOUND_SMALL_ID_SIZE;
dlg.nDefUBoundSmallIDSize = DEF_UBOUND_SMALL_ID_SIZE;
dlg.nDefLBoundOpponentSize = DEF_LBOUND_OPPONENT_SIZE;
dlg.nDefUBoundOpponentSize = DEF_UBOUND_OPPONENT_SIZE;
if(dlg.DoModal() == IDOK){
LowerBoundOfBallSize = dlg.nLBoundBallSize;
UpperBoundOfBallSize = dlg.nUBoundBallSize;
LowerBoundOfBigTeamSize = dlg.nLBoundBigTeamSize;
UpperBoundOfBigTeamSize = dlg.nUBoundBigTeamSize;
LowerBoundOfSmallIDSize = dlg.nLBoundSmallIDSize;
UpperBoundOfSmallIDSize = dlg.nUBoundSmallIDSize;
LowerBoundOfOpponentSize = dlg.nLBoundOpponentSize;
UpperBoundOfOpponentSize = dlg.nUBoundOpponentSize;
}
}
// 肺嚎 农扁 汲沥 劝己拳
void CVisionView::OnSetRobotSize()
{
// TODO: Add your control notification handler code here
if(bPlay)
return;
//KillTimer(1);
bSetRobotSize = TRUE;
bSetColor = FALSE;
}
void CVisionView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(bPlay)
return;
short h, w, x, y;
BYTE *pZoomBuffer;
CClientDC objDC(this);
CPen pen, *pOldPen;
if(bEndZoom && point.x >= (DispSizeX + ZOOM_OFFX) && point.x < (DispSizeX + ZOOM_OFFX + ZOOM_SIZE * ZOOM_SCALE)
&& point.y >= ZOOM_OFFY && point.y < (ZOOM_OFFY + ZOOM_SIZE * ZOOM_SCALE)){
SelectedRectInZoom.right = point.x;
SelectedRectInZoom.bottom = point.y;
pZoomBuffer = ZoomBuffer;
for(h = 0;h < ZOOM_SIZE * ZOOM_SCALE;h += ZOOM_SCALE)
for(w = 0;w < ZOOM_SIZE * ZOOM_SCALE;w += ZOOM_SCALE){
for(x = 0;x < ZOOM_SCALE;x++)
for(y = 0;y < ZOOM_SCALE;y++)
objDC.SetPixel(DispSizeX + ZOOM_OFFX + w + x, ZOOM_OFFY + h + y, RGB(*pZoomBuffer, *(pZoomBuffer + 1), *(pZoomBuffer + 2)));
pZoomBuffer += 4;
}
pen.CreatePen(PS_DOT, 0, RGB(0, 0, 0));
pOldPen = objDC.SelectObject(&pen);
objDC.MoveTo(SelectedRectInZoom.left, SelectedRectInZoom.top);
objDC.LineTo(SelectedRectInZoom.left, SelectedRectInZoom.bottom);
objDC.LineTo(SelectedRectInZoom.right, SelectedRectInZoom.bottom);
objDC.MoveTo(SelectedRectInZoom.left, SelectedRectInZoom.top);
objDC.LineTo(SelectedRectInZoom.right, SelectedRectInZoom.top);
objDC.LineTo(SelectedRectInZoom.right, SelectedRectInZoom.bottom);
objDC.SelectObject(pOldPen);
pen.DeleteObject();
}
CFormView::OnMouseMove(nFlags, point);
}
// 祸 汲沥, 侨伎 农扁 汲沥, 肺嚎 农扁 汲沥 殿狼 敲贰弊俊 蝶扼 秦寸 累诀 贸府
void CVisionView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_bEnableInitPos && point.x >= 0 && point.x < DispSizeX && point.y >= 0 && point.y < DispSizeY){
switch(nInitPosBall) {
case BALL :
iPositionOfBall[0] = (short)point.x;
iPositionOfBall[1] = (short)point.y;
bFlagBallFound = TRUE;
// nInitPosBall = HOME1;
break;
case HOME1 :
iPositionOfHomeRobot[HOME1][0] = (short)point.x;
iPositionOfHomeRobot[HOME1][1] = (short)point.y;
bFlagHomeRobotFound[HOME1] = TRUE;
// nInitPosBall = HOME2;
break;
case HOME2 :
iPositionOfHomeRobot[HOME2][0] = (short)point.x;
iPositionOfHomeRobot[HOME2][1] = (short)point.y;
bFlagHomeRobotFound[HOME2] = TRUE;
// nInitPosBall = HGOALIE;
// nInitPosBall = HOME3;
break;
/* case HOME3 :
iPositionOfHomeRobot[HOME3][0] = (short)point.x;
iPositionOfHomeRobot[HOME3][1] = (short)point.y;
bFlagHomeRobotFound[HOME3] = TRUE;
nInitPosBall = HOME4;
break;
case HOME4 :
iPositionOfHomeRobot[HOME4][0] = (short)point.x;
iPositionOfHomeRobot[HOME4][1] = (short)point.y;
bFlagHomeRobotFound[HOME4] = TRUE;
nInitPosBall = HGOALIE;
break;
*/ case HGOALIE :
iPositionOfHomeRobot[HGOALIE][0] = (short)point.x;
iPositionOfHomeRobot[HGOALIE][1] = (short)point.y;
bFlagHomeRobotFound[HGOALIE] = TRUE;
// nInitPosBall = OPPONENT1;
break;
case OPPONENT1 :
iPositionOfOpponent[OPP1][0] = (short)point.x;
iPositionOfOpponent[OPP1][1] = (short)point.y;
bFlagOpponentFound[OPP1] = TRUE;
// nInitPosBall = OPPONENT2;
break;
case OPPONENT2 :
iPositionOfOpponent[OPP2][0] = (short)point.x;
iPositionOfOpponent[OPP2][1] = (short)point.y;
bFlagOpponentFound[OPP2] = TRUE;
// nInitPosBall = OPPONENT3;
break;
case OPPONENT3 :
iPositionOfOpponent[OPP3][0] = (short)point.x;
iPositionOfOpponent[OPP3][1] = (short)point.y;
bFlagOpponentFound[OPP3] = TRUE;
// nInitPosBall = BALL;
// nInitPosBall = OPPONENT4;
break;
/* case OPPONENT4 :
iPositionOfOpponent[OPP4][0] = (short)point.x;
iPositionOfOpponent[OPP4][1] = (short)point.y;
bFlagOpponentFound[OPP4] = TRUE;
nInitPosBall = OPPONENT5;
break;
case OPPONENT5 :
iPositionOfOpponent[OPP5][0] = (short)point.x;
iPositionOfOpponent[OPP5][1] = (short)point.y;
bFlagOpponentFound[OPP5] = TRUE;
nInitPosBall = BALL;
break;
*/ }
}
else if( (bSetColor || bSetRobotSize) && point.x >= 0 && point.x < DispSizeX && point.y >= 0 && point.y < DispSizeY){
MdigHalt(MilDigitizerId);
Zoom(point);
bBeginZoom = TRUE;
bEndZoom = FALSE;
MdigGrabContinuous(MilDigitizerId, MilImageBufferId);
}
else if( (bSetColor || bSetRobotSize) && bBeginZoom && point.x >= (DispSizeX + ZOOM_OFFX) && point.x < (DispSizeX + ZOOM_OFFX + ZOOM_SIZE * ZOOM_SCALE)
&& point.y >= ZOOM_OFFY && point.y < (ZOOM_OFFY + ZOOM_SIZE * ZOOM_SCALE)){
SelectedRectInZoom.right = SelectedRectInZoom.left = point.x;
SelectedRectInZoom.top = SelectedRectInZoom.bottom = point.y;
bBeginZoom = FALSE;
bEndZoom = TRUE;
}
else if( bSetRobotSize && bEndZoom && point.x >= (DispSizeX + ZOOM_OFFX) && point.x < (DispSizeX + ZOOM_OFFX + ZOOM_SIZE * ZOOM_SCALE)
&& point.y >= ZOOM_OFFY && point.y < (ZOOM_OFFY+ZOOM_SIZE*ZOOM_SCALE)){
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?