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