⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recoprocess.cpp

📁 TRY2LPR-1.0开源的车牌识别核心
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if ((1.0*MatchNum['A'-'A'+10]-MatchNum[4])/MatchNum[4] > 0.20)
			break;

		nCount = 0;
		nAllCount = 0;
		for (i=(int)(0.875*pLPCharImg->Height); i<pLPCharImg->Height; i++)
			for (j=0; j<(0.25*pLPCharImg->Width+0.5); j++)
			{
				if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255)
					nCount++;
				nAllCount++;
			}
		
		if (0 == nAllCount) break;
		if (nCount*1.0/nAllCount > 0.3)
		{
			switch (LPNumType)
			{
			case LPNUM_ENNUM:

				*pCarSignID = 'A'-'A'+10;
				break;
			}
		}

		break;

	case 'A'-'A'+10:  
		
		if (MatchNum[10] == 0) break;
		if ((1.0*MatchNum[4]-MatchNum[10])/MatchNum[10] > 0.20)
			break;

		nCount = 0;
		nAllCount = 0;
		for (i=(int)(0.875*pLPCharImg->Height); i<pLPCharImg->Height; i++)
			for (j=0; j<(0.25*pLPCharImg->Width+0.5); j++)
			{
				if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255)
					nCount++;
				nAllCount++;
			}
		
		if (0 == nAllCount) break;
		if (nCount*1.0/nAllCount < 0.3)
		{
			switch (LPNumType)
			{
			case LPNUM_ENNUM:

				*pCarSignID = 4;
				break;
			}
		}

		break;

	case 'L'-'A'+10: 
		
		if (MatchNum['L'-'A'+10] == 0) break;
		if ((1.0*MatchNum['D'-'A'+10]-MatchNum['L'-'A'+10])/MatchNum['L'-'A'+10] > 0.20)
			break;

		nCount = 0;
		nAllCount = 0;
		for (i=0; i<pLPCharImg->Height; i++)
			for (j=(int)(0.5*pLPCharImg->Width); j<pLPCharImg->Width; j++)
			{
				if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255)
					nCount++;
				nAllCount++;
			}
		
		if (0 == nAllCount) break;
		if (nCount*1.0/nAllCount > 0.2)
		{
			switch (LPNumType)
			{
			case LPNUM_EN:
			case LPNUM_ENNUM:

				*pCarSignID = 'D'-'A'+10;
				break;
			}
		}
		break;

	case 'U'-'A'+10: 

		if (MatchNum['U'-'A'+10] == 0) break;
		if ((1.0*MatchNum[0]-MatchNum['U'-'A'+10])/MatchNum['U'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['D'-'A'+10]-MatchNum['U'-'A'+10])/MatchNum['U'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['O'-'A'+10]-MatchNum['U'-'A'+10])/MatchNum['U'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['Q'-'A'+10]-MatchNum['U'-'A'+10])/MatchNum['U'-'A'+10] > 0.20)
			break;

		nCount = 0;
		nAllCount = 0;
		for (i=0; i<(int)(1.0/10*pLPCharImg->Height+0.5); i++)
			for (j=(int)(1.0/4*pLPCharImg->Width); j<(int)(3.0/4*pLPCharImg->Width+0.5); j++)
			{
				if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255)
					nCount++;
				nAllCount++;
			}

		if (0 == nAllCount) break;
		if (nCount*1.0/nAllCount > 0.2)
		{
			switch (LPNumType)
			{
			case LPNUM_ENNUM:

				*pCarSignID = 0;
				RecoAgain(pCarSignID, pLPCharImg, MatchNum, LPNumType);

				break;

			case LPNUM_EN:

				*pCarSignID = 'O'-'A'+10;
				RecoAgain(pCarSignID, pLPCharImg, MatchNum, LPNumType);

				break;

			}
		}
		break;

	case 'S'-'A'+10:   

		if (MatchNum['S'-'A'+10] == 0) break;
		if ((1.0*MatchNum['G'-'A'+10]-MatchNum['S'-'A'+10])/MatchNum['S'-'A'+10] > 0.20 &&
			(1.0*MatchNum[8]-MatchNum['S'-'A'+10])/MatchNum['S'-'A'+10] > 0.20)
			break;
		
		bFlag = FALSE;
		nCount = 0;
		i = (int)(0.33*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		bFlag = FALSE;
		nAllCount = 0;
		i = (int)(0.67*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nAllCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		if (nCount <= 1 && nAllCount >=2)
		{
			switch (LPNumType)
			{
			case LPNUM_EN:
			case LPNUM_ENNUM:
				*pCarSignID = 'G'-'A'+10;
				break;
			}
		}

		if (nCount >= 2 && nAllCount >=2)
		{
			switch (LPNumType)
			{
			case LPNUM_NUM:
			case LPNUM_ENNUM:
				*pCarSignID = 8;
				break;
			}
		}

		break;

	case 'C'-'A'+10:

		if (MatchNum['C'-'A'+10] == 0) break;
		if ((1.0*MatchNum[0]-MatchNum['C'-'A'+10])/MatchNum['C'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['O'-'A'+10]-MatchNum['C'-'A'+10])/MatchNum['C'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['Q'-'A'+10]-MatchNum['C'-'A'+10])/MatchNum['C'-'A'+10] > 0.20)
			break;

		bFlag = FALSE;
		nCount = 0;
		i = (int)(0.5*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		if (nCount > 1)
		{
			switch (LPNumType)
			{
			case LPNUM_EN:

				*pCarSignID = 'O'-'A'+10;
				RecoAgain(pCarSignID, pLPCharImg, MatchNum, LPNumType);
				break;

			case LPNUM_ENNUM:

				*pCarSignID = 0;
				RecoAgain(pCarSignID, pLPCharImg, MatchNum, LPNumType);
				break;
			}
		}

		break;

	case 'B'-'A'+10:

		if (MatchNum['B'-'A'+10] == 0) break;
		if ((1.0*MatchNum[0]-MatchNum['B'-'A'+10])/MatchNum['B'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['D'-'A'+10]-MatchNum['B'-'A'+10])/MatchNum['B'-'A'+10] > 0.20 &&
			 (1.0*MatchNum[8]-MatchNum['B'-'A'+10])/MatchNum['B'-'A'+10] > 0.20)
			break;
		
		bFlag = FALSE;
		nCount = 0;
		for (i=0; i<pLPCharImg->Height; i++)
		{
			j = (int)(1.0/2.0*pLPCharImg->Width);

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j)==255 && !bFlag)
			{
				nCount++;
				bFlag = TRUE;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
			{
				bFlag = FALSE;
			}

		}

		if (nCount < 3)
		{
			switch (LPNumType)
			{
			case LPNUM_EN:

				*pCarSignID = 'D'-'A'+10;
				break;

			case LPNUM_ENNUM:

				*pCarSignID = 'D'-'A'+10;
				RecoAgain(pCarSignID, pLPCharImg, MatchNum, LPNumType);

				break;
			}
		}
		else 
		{
			nCount = 0;
			nAllCount = 0;
			for (i=0; i<(int)(0.1*pLPCharImg->Height+0.5); i++)
				for (j=0; j<(int)(0.2*pLPCharImg->Width+0.5); j++)
				{
					if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255)
						nCount++;
					nAllCount++;
				}
			if (0 == nAllCount) break;
			if (nCount*1.0/nAllCount < 0.5)
			{
				switch (LPNumType)
				{
				case LPNUM_ENNUM:

					*pCarSignID = 8;

					break;
				}
			}
		}

		break;
	
	case 'D'-'A'+10:

		if (MatchNum['D'-'A'+10] == 0) break;
		if ((1.0*MatchNum[0]-MatchNum['D'-'A'+10])/MatchNum['D'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['Q'-'A'+10]-MatchNum['D'-'A'+10])/MatchNum['D'-'A'+10] > 0.20 &&
			 (1.0*MatchNum['O'-'A'+10]-MatchNum['D'-'A'+10])/MatchNum['D'-'A'+10] > 0.20)
			break;

		nCount = 0;
		nAllCount = 0;
		for (i=0; i<(int)(0.1*pLPCharImg->Height+0.5); i++)
			for (j=0; j<(int)(0.2*pLPCharImg->Width+0.5); j++)
			{
				if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255)
					nCount++;
				nAllCount++;
			}

		if (0 == nAllCount) break;
		if (nCount*1.0/nAllCount < 0.5)
		{

			switch (LPNumType)
			{
			case LPNUM_EN:

				*pCarSignID = 'O'-'A'+10;
				RecoAgain(pCarSignID, pLPCharImg, MatchNum, LPNumType);

				break;

			case LPNUM_ENNUM:

				*pCarSignID = 0;
				RecoAgain(pCarSignID, pLPCharImg, MatchNum, LPNumType);

				break;
			}
		}

		break;

	case 5:  

		if (MatchNum[5] == 0) break;
		if ((1.0*MatchNum[8]-MatchNum[5])/MatchNum[5] > 0.20)
			break;
		
		bFlag = FALSE;
		nCount = 0;
		i = (int)(0.67*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		if (nCount > 1)
		{
			switch (LPNumType)
			{
			case LPNUM_NUM:
			case LPNUM_ENNUM:
				*pCarSignID = 8;
				break;
			}
		}
		break;

	case 'K'-'A'+10:   

		if (MatchNum['K'-'A'+10] == 0) break;
		if ((1.0*MatchNum['A'-'A'+10]-MatchNum['K'-'A'+10])/MatchNum['K'-'A'+10] > 0.20)
			break;

		bFlag = FALSE;
		nCount = 0;
		i = (int)(0.67*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		if (nCount > 1)
		{
			switch (LPNumType)
			{
			case LPNUM_EN:
			case LPNUM_ENNUM:
				*pCarSignID = 'A'-'A'+10;
				break;
			}
		}
		break;

	case 6:  

		if (MatchNum[6] == 0) break;
		if ((1.0*MatchNum[5]-MatchNum[6])/MatchNum[6] > 0.20)
			break;

		bFlag = FALSE;
		nCount = 0;
		i = (int)(0.67*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		if (nCount <= 1)
		{
			switch (LPNumType)
			{
			case LPNUM_NUM:
			case LPNUM_ENNUM:
				*pCarSignID = 5;
				break;
			}
		}

		break;

	case 3: 

		if (MatchNum[3] == 0) break;
		if ((1.0*MatchNum[8]-MatchNum[3])/MatchNum[3] > 0.20 &&
			 (1.0*MatchNum[7]-MatchNum[3])/MatchNum[3] > 0.20)
			break;

		bFlag = FALSE;
		nCount = 0;
		i = (int)(0.67*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		bFlag = FALSE;
		nAllCount = 0;
		i = (int)(0.33*pLPCharImg->Height+0.5);
		for (j=0; j<pLPCharImg->Width; j++)
		{
			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 255 && !bFlag)
			{
				bFlag = TRUE;
				nAllCount++;
			}

			if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				bFlag = FALSE;
		}

		if (nCount > 1 || nAllCount > 1)
		{
			switch (LPNumType)
			{
			case LPNUM_NUM:
			case LPNUM_ENNUM:

				*pCarSignID = 8;
				break;
			}
		}
		else 
		{
			bFlag = FALSE;
			nCount = 0;
			for (i=0; i<pLPCharImg->Height; i++)
			{
				j = (int)(1.0/2.0*pLPCharImg->Width);

				if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j)==255 && !bFlag)
				{
					nCount++;
					bFlag = TRUE;
				}

				if (*(pLPCharImg->pImg+i*pLPCharImg->Width+j) == 0 && bFlag)
				{
					bFlag = FALSE;
				}

				if (nCount<3)
				{
					switch (LPNumType)
					{
					case LPNUM_ENNUM:
					case LPNUM_NUM:

						*pCarSignID = 7;
						break;
					}
				}
			}
		}

		break;
	}

	return 1;
}

⌨️ 快捷键说明

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