亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lprprocess.cpp

?? 能夠實現汽車的車牌定位并且最終識別車牌字符
?? CPP
?? 第 1 頁 / 共 4 頁
字號:

		*(pProject+pSrcImg->Width-1) = 0;

		break;

	default:
		return 0;
	}
	return 1;
}

int ProjectFilter(int *pProject, int PrjLen, TPrjType PrjType, int LPAccurateHeight)
{
	int i, j, p;
	int Temp, Temp1;
	BOOL Flag1, Flag2;
	int avg, CharID;
	int TempLeft[100], TempRight[100];
	int TempWidth[100], MergeID[100];

	*(pProject + PrjLen - 1) = 0;

	switch (PrjType)
	{
	case H_FILTER:  
		for (i=0; i<PrjLen; i++)
		{
			if (*(pProject+i) <  38 * 255)
				*(pProject+i) = 0;
		}
		Flag1 = TRUE;

		for (i=0; i<PrjLen; i++)
		{
			avg = 0;
			if ((*(pProject+i) != 0) && Flag1)
			{
				Temp = i;
				Flag1 = FALSE;
			}
			if ((*(pProject+i) == 0) && (!Flag1))
			{
				for (j=Temp; j<=i; j++)
					avg = avg + *(pProject+j) / 255;

				avg = avg / (i - Temp);

				if ((i-Temp<(int)(g_LPHeight*0.35+0.5)) ||
							(avg<(int)(g_LPWidth*0.30+0.5)))
				{
					for (j=Temp; j<i; j++)
						*(pProject+j) = 0;
				}

				Flag1 = TRUE;
			}
		}
		break;

	case V_FILTER:
		for (j=0; j<PrjLen; j++)
        {
			if (*(pProject+j) < (int)(0.2*g_LPHeight*255+0.5))
				*(pProject+j) = 0;
		}
		Flag1 = TRUE;
		for (i=0; i<PrjLen; i++)
		{
			avg = 0;
			if ((*(pProject+i)!=0) && Flag1)
			{
				Temp = i;
				Flag1 = FALSE;
			}
			
			if ((*(pProject+i) == 0) && (!Flag1))
			{
				for (j=Temp; j<=i; j++)
					avg = avg + *(pProject+j)/255;

				avg = avg / (i - Temp);

				if ((i-Temp<(int)(g_LPWidth*0.015+0.5)) ||
								(avg<(int)(g_LPHeight*0.15+0.5)))
				{
					for (j=Temp; j<i; j++)
						*(pProject+j) = 0;
				}
				Flag1 = TRUE;
			}
		}

		Flag2 = TRUE; Flag1 = TRUE;
		for (i=0; i<PrjLen; i++)
		{
			if ((*(pProject+i)!=0) && Flag1)
			{
				Flag1 = FALSE;
			}

			if ((*(pProject+i)==0) && (!Flag1))
			{
				Temp1 = i;
				Flag1 = TRUE;
				Flag2 = FALSE;
			}

			if ((*(pProject+i)!=0) && (!Flag2))
			{
				if ((i-Temp1)<(int)(0.11*g_LPWidth+0.5))
				{
					for (j=Temp1; j<i; j++)
						*(pProject+j) = 17 * 255;
				}
				Flag2 = TRUE;
			}
		}

		Flag1 = TRUE; Temp = 0;
		for (i=0; i<PrjLen; i++)
		{
			if ((*(pProject+i) != 0) && Flag1)
			{
				Temp = i;
				Flag1 = FALSE;
			}

			if ((*(pProject+i)==0) && (!Flag1))
			{
				if (i-Temp > (int)(g_LPWidth*1.5+0.5))
				{
					for (j=Temp; j<i; j++)
						*(pProject+j) = 0;
				}
				Flag1 = TRUE;
			}
		}
		break;

	case IH_FILTER :
		
		for (i=0; i<PrjLen; i++)
		{
			if (*(pProject+i) < 16 * 255)
			{
				*(pProject+i) = 0;
			}
		}
		break;

	case IV_FILTER :
		for (i=0; i<PrjLen; i++)
		{
			if (*(pProject+i) < (int)(0.1*LPAccurateHeight+0.5)*255)
		        *(pProject+i) = 0;
		}
		
		Flag1 = TRUE;
		for (i=0; i<PrjLen; i++)
		{
			if ((*(pProject+i) != 0) && Flag1)
			{
				Temp = i;
				Flag1 = FALSE;
			}

			if ((*(pProject+i) == 0) && (!Flag1))
			{
				if (i - Temp < (int)(0.2 * LPAccurateHeight + 0.5))
				{
					for (j=Temp; j<i; j++)
						if (*(pProject+j) < (int)(0.3*LPAccurateHeight + 0.5)*255)
							*(pProject+j) = 0;
				}
				Flag1 = TRUE;
			}
		}

		if (PrjLen > (int)(4.6 * LPAccurateHeight + 0.5))
		{
			Flag2 = TRUE; Flag1 = TRUE;
			for (i=0; i<=(int)((PrjLen-1)/3.0); i++)
			{
				if ((*(pProject+i) != 0) && Flag1)
				{
					Flag1 = FALSE;
				}
				
				if ((*(pProject+i) == 0) && (!Flag1))
				{
					Temp1 = i;         
					Flag1 = TRUE;
					Flag2 = FALSE;
				}

		        if ((*(pProject+i) != 0) && (!Flag2))
				{
					if (i-Temp1 > (int)(0.6*LPAccurateHeight+0.5))
					{
						for (j=i-1; j>=0; j--)
							*(pProject+j) = 0;
					}
					Flag2 = TRUE;
				}
			}

			Flag1 = TRUE;
			CharID = 0;
			for (i=0; i<=(int)((PrjLen-1)/2.0); i++)
			{
				if ((*(pProject+i) != 0) && Flag1)
				{
					TempLeft[CharID] = i;
					Flag1 = FALSE;
				}

				if ((*(pProject+i) == 0) && (!Flag1))
				{
					TempRight[CharID] = i;
					TempWidth[CharID] = TempRight[CharID] - TempLeft[CharID];
					CharID++;
					if (CharID > 100)
					{
						return 0;
					}

					Flag1 = TRUE;
				}
			}

			j = 0;
			for (i=0; i<CharID; i++)
			{
				if (TempWidth[i] < (int)(0.35*LPAccurateHeight+0.5))
				{
					MergeID[j] = i;
					j++;
				}

				if ((i==CharID-1) || (TempWidth[i]>=(int)(0.35*LPAccurateHeight+0.5)))
				{
					 if (j > 1)
					 {
						for (p=TempLeft[MergeID[0]]; p<=TempRight[MergeID[j-1]]; p++)
						{
						   *(pProject+p) = (int)(0.5 * LPAccurateHeight + 0.5) * 255;
						}
					 }
					 j = 0;
				}
			}
		}

		Flag1 = TRUE;
		for (i=0; i<PrjLen; i++)
		{
			if ((*(pProject+i) != 0) && Flag1)
			{
				Temp = i;
				Flag1 = FALSE;
			}

			if ((*(pProject+i) == 0) && (!Flag1))
			{
				if (i-Temp < (int)(0.3*LPAccurateHeight+0.5))
				{
					for (j=Temp; j<i; j++)
						*(pProject+j) = 0;
				}
				Flag1 = TRUE;
			}
		}

		break;

	default:
		return 0;
	}

	return 1;
}

int TwoPixelCarImg(PGrayImg pDestImg, PGrayImg pSrcImg, int Threshold)
{
	int i, j;
	int res = 0;
	TGrayImg TempImg;

	res = GrayImg_Malloc(&TempImg, pSrcImg->Width, pSrcImg->Height);
	if (res == 0)
		return 0;

	for (i=0; i<pSrcImg->Height; i++)
		for (j=0; j<pSrcImg->Width; j++)
		{
			if (*(pSrcImg->pImg+i*pSrcImg->Width+j) > Threshold)
				*(TempImg.pImg+TempImg.Width*i+j) = 255;
			else
				*(TempImg.pImg+TempImg.Width*i+j) = 0;
		}

	pDestImg->Width = TempImg.Width;
	pDestImg->Height = TempImg.Height;
	pDestImg->pImg = TempImg.pImg;

	return 1;
}

int GetSubImg(PGrayImg pDestImg, PGrayImg pSrcImg, RECT Rect)
{
	int i, j;
	int res = 0;
	TGrayImg TempImg;

	int Left=0, Right=0, Top=0, Bottom=0;

	res = GrayImg_Malloc(&TempImg, Rect.right-Rect.left+1, Rect.bottom-Rect.top+1);
	if (0 == res)
		return 0;

	for (i=Rect.top; i<=Rect.bottom; i++)
		for (j=Rect.left; j<=Rect.right; j++)
		{
			if ((i>=0 && i<pSrcImg->Height) && (j>=0 && j<pSrcImg->Width))
				*(TempImg.pImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = *(pSrcImg->pImg+i*pSrcImg->Width+j);
			else
				*(TempImg.pImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = 0;
		}

	pDestImg->Width = TempImg.Width;
	pDestImg->Height = TempImg.Height;
	pDestImg->pImg = TempImg.pImg;

	return 1;
}

int GetSubColorImg(PColorImg pDestImg, PColorImg pSrcImg, RECT Rect)
{
	int i, j;
	int res = 0;
	TColorImg TempImg;

	res = ColorImg_Malloc(&TempImg, Rect.right-Rect.left+1, Rect.bottom-Rect.top+1);
	if (0 == res)
		return 0;

	for (i=Rect.top; i<=Rect.bottom; i++)
		for (j=Rect.left; j<=Rect.right; j++)
		{
			if ((i>=0 && i<pSrcImg->Height) && (j>=0 && j<pSrcImg->Width))
			{
				*(TempImg.pRImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = *(pSrcImg->pRImg+i*pSrcImg->Width+j);
				*(TempImg.pGImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = *(pSrcImg->pGImg+i*pSrcImg->Width+j);
				*(TempImg.pBImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = *(pSrcImg->pBImg+i*pSrcImg->Width+j);
				*(TempImg.pYImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = *(pSrcImg->pYImg+i*pSrcImg->Width+j);
			}
			else
			{
				*(TempImg.pRImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = 0;
				*(TempImg.pGImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = 0;
				*(TempImg.pBImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = 0;
				*(TempImg.pYImg+(i-Rect.top)*TempImg.Width+(j-Rect.left)) = 0;
			}
		}
	TempImg.BitCount = pSrcImg->BitCount;

	pDestImg->Width = TempImg.Width;
	pDestImg->Height = TempImg.Height;
	pDestImg->pRImg = TempImg.pRImg;
	pDestImg->pGImg = TempImg.pGImg;
	pDestImg->pBImg = TempImg.pBImg;
	pDestImg->pYImg = TempImg.pYImg;
	pDestImg->BitCount = TempImg.BitCount;

	return 1;
}

int RecoLPColor(TColorID *pLPColorID, PColorImg pSrcImg)
{
	int i, j;
	int ACount[4];
	int Temp;
	BYTE R, G, B;

	ACount[LP_BLACK] = 0;
	ACount[LP_BLUE] = 0; 
	ACount[LP_YELLOW] = 0; 
	ACount[LP_WHITE] = 0;

	for (i=(int)(0.15*pSrcImg->Height+0.5); i<(int)(pSrcImg->Height-0.15*pSrcImg->Height+0.5); i++)
		for (j=(int)(0.15*pSrcImg->Width+0.5); j<(int)(pSrcImg->Width-0.15*pSrcImg->Width+0.5); j++)
		{
			R = *(pSrcImg->pRImg+i*pSrcImg->Width+j);
			G = *(pSrcImg->pGImg+i*pSrcImg->Width+j);
			B = *(pSrcImg->pBImg+i*pSrcImg->Width+j);

			if ((B-G>g_BYDiff) && (B-R>g_BYDiff) && (B>g_BYLP))
				  ACount[LP_BLUE]++;

			if ((R-B>g_BYDiff) && (G-B>g_BYDiff) && (R>g_BYLP) && (G>g_BYLP))
				  ACount[LP_YELLOW]++;

			if ((B<g_BlackLP)&&(G<g_BlackLP)&&(R<g_BlackLP)&&(abs(G-B)<g_BWDiff)&&(abs(G-R)<g_BWDiff)&&(abs(B-R)<g_BWDiff))
				  ACount[LP_BLACK]++;

			if ((R>g_WhiteLP)&&(G>g_WhiteLP)&&(B>g_WhiteLP)&&(abs(G-B)<g_BWDiff)&&(abs(G-R)<g_BWDiff)&&(abs(B-R)<g_BWDiff))
				  ACount[LP_WHITE]++;
		}

	Temp = ACount[LP_BLUE];
	*pLPColorID = LP_BLUE;

	for (i=0; i<4; i++)
		if (Temp < ACount[i])
		{
			Temp = ACount[i];
			*pLPColorID = (TColorID)i;
		}
	return 1;
}

int TwoPixelLPImg(PGrayImg pDestImg, PGrayImg pSrcImg, 
				    double MaxBlackRatio, double MinBlackRatio, int *pThreshold)
{
	int i, j;
	int res = 0;
	int TempArray[9] = {1,1,1,
		                1,0,1,
						1,1,1};
	int TempArray1[9] = {-1,0,1,
						 -1,0,1,
						 -1,0,1};
	int *pProject=NULL;
	int WhitePixelCount, BlackPixelCount;
	int Bottom, Top;
	BOOL StopFlag1, StopFlag2;

	TGrayImg TempImg, EdgeImg, TempImg1;

	Top = 0;
	Bottom = pSrcImg->Height-1;

	res = Template(&EdgeImg, pSrcImg, TempArray1, 3, 1);
	if (0 == res)
		return 0;

	res = Template(&TempImg1, &EdgeImg, TempArray, 3, 1.0/8.0);
	if (0 == res)
		return 0;

	res = TwoPixelCarImg(&TempImg, &TempImg1, g_Threshold_HLP);
	if (0 == res)
		return 0;

	pProject = (int*)malloc(pSrcImg->Height*sizeof(int));
	if (pProject == NULL)
		return 0;

	res = ProjectImg(pProject, &TempImg, H_FILTER);
	if (0 == res)
		return 0;

	for (i=0; i<pSrcImg->Height; i++)
		if (*(pProject+i) < int(0.25*pSrcImg->Height))
			*(pProject+i) = 0;

	for (i=pSrcImg->Height/2; i>=0; i--)
	{
		if (*(pProject+i) == 0)
		{
			Top = i;
			break;
		}
	}
	for (i=pSrcImg->Height/2; i<pSrcImg->Height; i++)
	{
		if (*(pProject+i) == 0)
		{
			Bottom = i;
			break;
		}
	}

	if (pProject)
		free(pProject);

	GrayImg_Free(&EdgeImg);
	GrayImg_Free(&TempImg1);
	GrayImg_Free(&TempImg);

	*pThreshold = 50;

	res = GrayImg_Malloc(&TempImg, pSrcImg->Width, pSrcImg->Height);
	if (res == 0)
		return 0;

	StopFlag1 = FALSE;
    StopFlag2 = FALSE;

	while(TRUE)
	{
		BlackPixelCount = 0;
		WhitePixelCount = 0;

		for (i=0; i<pSrcImg->Height; i++)
			for (j=0; j<pSrcImg->Width; j++)
			{
				if (*(pSrcImg->pImg+i*pSrcImg->Width+j) > *pThreshold)
				{
					if (i>=Top && i<=Bottom)
						WhitePixelCount++;
					*(TempImg.pImg+i*TempImg.Width+j) = 255;
				}
				else
				{
					if (i>=Top && i<=Bottom)
						BlackPixelCount++;
					*(TempImg.pImg+i*TempImg.Width+j) = 0;
				}
			}

		if ((BlackPixelCount<=(int)(MaxBlackRatio*(BlackPixelCount+WhitePixelCount)+0.5))
		    && (BlackPixelCount>=(int)(MinBlackRatio*(BlackPixelCount+WhitePixelCount)+0.5)))
			break;

		if (BlackPixelCount>(int)(MaxBlackRatio*(BlackPixelCount+WhitePixelCount)+0.5))
		{
			StopFlag1 = TRUE;
			*pThreshold -= 5;
			if (StopFlag2)
				break;
		}

		if (BlackPixelCount < (int)(MinBlackRatio*(BlackPixelCount+WhitePixelCount)+0.5))
		{
			StopFlag2 = TRUE;
			*pThreshold += 5;
			if (StopFlag1)
				break;
		}
	}

	pDestImg->Width = TempImg.Width;
	pDestImg->Height = TempImg.Height;
	pDestImg->pImg = TempImg.pImg;

	return 1;
}

int Invert(PGrayImg pDestImg, PGrayImg pSrcImg)
{
	int i, j;
	int res = 0;
	TGrayImg TempImg;

	res = GrayImg_Malloc(&TempImg, pSrcImg->Width, pSrcImg->Height);
	if (0 == res)
		return 0;

	for (i=0; i<pSrcImg->Height; i++)
		for (j=0; j<pSrcImg->Width; j++)
		{
			*(TempImg.pImg+i*TempImg.Width+j) = 255 - *(pSrcImg->pImg+i*pSrcImg->Width+j);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美精品一区| 中文字幕在线一区免费| 欧美性色欧美a在线播放| 韩国三级电影一区二区| 亚洲国产精品一区二区www在线| 精品国产123| 日韩午夜在线观看| 精品91自产拍在线观看一区| 日韩一二三区视频| 日韩精品一区二区三区swag| 欧美高清www午色夜在线视频| www.日韩精品| 色综合久久六月婷婷中文字幕| 国产一区二区不卡在线| 99久久精品国产一区| 国产成人免费视| 成人一区在线观看| 99精品黄色片免费大全| 97se狠狠狠综合亚洲狠狠| 99久久婷婷国产| 欧美制服丝袜第一页| 91精品国产综合久久久蜜臀粉嫩| 欧美综合天天夜夜久久| 欧美精品xxxxbbbb| 欧美日韩亚洲国产综合| 日韩一区二区电影在线| 精品久久人人做人人爰| 国产午夜精品一区二区三区嫩草| 国产午夜精品一区二区三区嫩草| 亚洲日本免费电影| 性久久久久久久| 国产在线观看一区二区| 99久久精品国产麻豆演员表| 在线观看网站黄不卡| 91精品国产乱码久久蜜臀| 国产欧美日韩另类一区| 亚洲国产精品一区二区久久恐怖片| 久久精品av麻豆的观看方式| 精品在线观看免费| 99久久伊人网影院| 精品乱人伦一区二区三区| 精品福利av导航| 国产精品无人区| 午夜一区二区三区视频| 国产精品白丝jk黑袜喷水| 色婷婷香蕉在线一区二区| 欧美老年两性高潮| 中文字幕在线观看一区二区| 午夜成人在线视频| 国产成人精品影视| 欧美日韩日日骚| 国产亚洲精品中文字幕| 日韩中文字幕av电影| 99视频有精品| 2020国产精品自拍| 日韩激情一区二区| 成人av综合在线| 6080午夜不卡| 亚洲综合在线第一页| 成人网男人的天堂| 337p粉嫩大胆色噜噜噜噜亚洲| 一级特黄大欧美久久久| 高清不卡一区二区| 久久久久亚洲综合| 日本不卡在线视频| 欧美日韩久久一区二区| 亚洲自拍欧美精品| 99riav一区二区三区| 欧美国产精品一区二区三区| 国产乱子轮精品视频| 日韩欧美一区二区三区在线| 亚洲欧美自拍偷拍色图| 北条麻妃一区二区三区| 国产精品网站在线播放| 成人激情动漫在线观看| 国产网站一区二区| 国产高清不卡二三区| 国产欧美日韩卡一| 香蕉影视欧美成人| 欧美在线free| 一区二区激情小说| 欧美视频自拍偷拍| 亚洲女人的天堂| 高清日韩电视剧大全免费| 国产日本欧美一区二区| 成人动漫视频在线| 亚洲天堂精品在线观看| 色婷婷综合久久久中文一区二区| 国产精品免费久久| 91麻豆国产福利精品| 亚洲综合在线第一页| 欧美午夜精品一区二区三区 | 青椒成人免费视频| 欧美美女黄视频| 午夜欧美视频在线观看| 在线成人高清不卡| 国产一区二区三区久久悠悠色av| 69精品人人人人| 国产麻豆视频精品| 国产精品久线观看视频| 一本色道久久综合亚洲aⅴ蜜桃 | 不卡欧美aaaaa| 亚洲免费av观看| 欧美日韩精品欧美日韩精品| 免费不卡在线观看| 亚洲国产精品激情在线观看| 91伊人久久大香线蕉| 亚洲bt欧美bt精品| 国产日韩欧美电影| 欧美午夜片在线看| 国产精品资源在线观看| 亚洲少妇最新在线视频| 欧美一二三在线| 99精品久久99久久久久| 麻豆精品一区二区三区| 国产欧美日韩在线看| 在线观看日韩一区| 久久精品国产久精国产爱| 国产女主播在线一区二区| 一本到三区不卡视频| 免费美女久久99| 中文字幕在线观看不卡| 欧美午夜不卡视频| 成人妖精视频yjsp地址| 日本不卡不码高清免费观看| 欧美激情在线一区二区| 欧美福利视频一区| 91视频观看免费| 精品一区二区久久| 亚洲午夜电影网| 欧美videossexotv100| 色吊一区二区三区| 国产乱子伦视频一区二区三区 | 欧美亚洲尤物久久| 久久精品免视看| 3d成人动漫网站| 日韩视频不卡中文| 9191精品国产综合久久久久久| 日韩av午夜在线观看| 波多野结衣精品在线| 激情久久久久久久久久久久久久久久| 国产精品久久久久久久久久免费看| 91麻豆精品国产91久久久久| 国产成人免费网站| 一区二区成人在线视频| 亚洲国产成人一区二区三区| 欧美日韩亚洲综合在线| 色呦呦网站一区| 99久久99久久精品免费看蜜桃| 亚洲综合区在线| 亚洲人精品一区| 国产精品久久久久久久久免费相片| 欧美v日韩v国产v| 成人性生交大片免费看视频在线| 亚洲人吸女人奶水| 五月综合激情婷婷六月色窝| 久久久久久日产精品| 精品久久国产老人久久综合| 精品欧美一区二区三区精品久久| 日本道精品一区二区三区| 中文字幕在线不卡视频| 欧美一区二区在线播放| 欧美一区二区久久久| 日韩一二在线观看| 26uuu精品一区二区在线观看| 日韩美一区二区三区| 中文字幕一区二区三区在线不卡| 91精品国产综合久久香蕉的特点| 精品不卡在线视频| www.久久久久久久久| 亚洲柠檬福利资源导航| 高清在线观看日韩| 理论片日本一区| 一本久久a久久免费精品不卡| 日本福利一区二区| 91在线视频官网| 国产精品主播直播| 亚洲特级片在线| 舔着乳尖日韩一区| 色综合视频一区二区三区高清| 91尤物视频在线观看| 蜜臀av一级做a爰片久久| 五月婷婷综合网| 日韩精品一区二区三区老鸭窝| 国产欧美日韩视频在线观看| 欧美精品v国产精品v日韩精品| 日韩一区二区免费电影| 欧美日韩国产成人在线91| 亚洲一区二区三区自拍| 免费观看成人av| 国产精品乱码人人做人人爱| 91免费国产视频网站| 欧美色窝79yyyycom| 秋霞午夜av一区二区三区| 日韩国产高清影视| 在线精品观看国产| 91福利小视频| 91黄色免费看| 日韩视频免费观看高清完整版在线观看| 精品久久久久久久久久久久久久久 |