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

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

?? matchpeak.cpp

?? 圖像處理軟件,功能比較基礎
?? CPP
字號:
// MatchPeak.cpp: implementation of the CMatchPeak class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "Radar.h"
#include "MatchPeak.h"

#include "Comlib.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

#define  BUFFERSIZE   100

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
static CString Memo[8] ={
	"C",
	"L",
	"R",
	"Tgt",
	"Add",
	"309",
	"313",
	"315"
};

CMatchPeak::CMatchPeak(float ** p ,int row,int col,int Tsz,float sgm)
{
	cor = p;
	r = row;
	c = col;
	TSize  = Tsz;    // 峰尺度大小,取0表示極大值為正確匹配點
	                 // 取-1表示極小值為正確匹配點
	sigma  = sgm;
	bProced = FALSE;
}

CMatchPeak::CMatchPeak()
{
	bProced = FALSE;
}

CMatchPeak::~CMatchPeak()
{

}

void CMatchPeak::Open(float ** p ,int row,int col,int Tsz,float sgm)
{
	cor = p;
	r = row;
	c = col;
	TSize  = Tsz;    // 峰尺度大小,取0表示極大值為正確匹配點
	                 // 取-1表示極小值為正確匹配點
	sigma  = sgm;
	bProced = FALSE;
}

void CMatchPeak::PeakDelmem(FPOINT* peak,int pos,int* len)
{
   int i;

   for (i=pos;i<*len-1;i++) {
      peak[i].x = peak[i+1].x;
      peak[i].y = peak[i+1].y;
   }
   (*len)--;
}

inline void CMatchPeak::PeakAddmem(FPOINT* peak,int pos,int* len,int row,int col)
{
      peak[pos].x = (float)col;
      peak[pos].y = (float)row;
      peak[pos].time = 1;
      (*len)+=1;
}

inline float CMatchPeak::PeakDistance(FPOINT p1,FPOINT p2)
{
   return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);
}

void CMatchPeak::Processing()
{
    float nei,total;
    int neicou,count;
	
    FPOINT posspeak[BUFFERSIZE];
    int len , lenbak , num ;
    float totalx,totaly;
    
	len = lenbak = num = 0;
	bProced = TRUE;
    
	/* 找相關面中的最大最小值點  */
	NPOT pMax = CComlib::GetMaxisum( cor ,  r , c);// , 1);  // 間隔1+1粗采樣搜索
	NPOT pMin = CComlib::GetMinisum( cor ,  r , c);// , 1);  // 間隔1+1粗采樣搜索
	float  fMax = pMax.cor;
	float  fMin = pMin.cor;
	float  fDist = fMax-fMin;
	
	m_MaxPot.x = pMax.x;
	m_MaxPot.y = pMax.y;
	m_MaxPot.cor = fMax;

	m_MinPot.x = pMin.x;
	m_MinPot.y = pMin.y;
	m_MinPot.cor = fMin;

	// 匹配點選為極大值點
	if(TSize == 0)
	{
		m_CorPot = m_MaxPot;
		return ;
	}
	else if(TSize == -1)  // 匹配點選為極小值點
	{
		m_CorPot = m_MinPot;
		return;
	}

	NPOT ret = {0,0,0};
	float  frow,fcol;

	/* invert lead the max to be the lest point */
	if(fMax < -fMin)      
	{
		for (int i=0;i<r;i++) 
		for (int j=0;j<c;j++) 
			cor[i][j] = fMax - cor[i][j];
		ret = pMin;
	}
	else
	{
		for (int i=0;i<r;i++) 
		for (int j=0;j<c;j++) 
			cor[i][j] -= fMin;
		ret = pMax;
	}
	
	frow = (float) ret.y;
	fcol = (float) ret.x ;

	/* 從模板尺寸為(TSize-1)/2開始搜索 */ 
	for ( int HalfSize= (int) ((TSize-1)/2) ; HalfSize>=3 ; HalfSize--) 
	{
		len = num = 0;

		for (int i=0;i<r;i++) 
		for (int j=0;j<c;j++) 
		{
			count = neicou =0;
			nei =  total = 0;
			BOOL bLocalMaxFlag = TRUE;
			for (int m=-HalfSize;m<=HalfSize;m++) 
			for (int n=-HalfSize;n<=HalfSize;n++) 
			{
				int k = m+i;
				int l = n+j;
				if ( (k>=0) && (k<r) && (l>=0) && (l<c) ) 
				{ ; }
				else if ( ((k<0) && (l>=0) && (l<c)) ||
					((k>=r) && (l>=0) &&(l<c)) ) 
				{
					k = i-m; l = j+n;
				}
				else if ( ((k>=0) && (k<r) && (l<0)) ||
					((k>=0) && (k<r) && (l>=c)) ) 
				{
					k = m+i; l = j-n;
				}
				else 
				{
					k = i-m; l = j-n;
				}
				
				if( k<0 || l<0 || k>=r || l>=c)
				{
					TRACE("k = %d, l= %d , HalfSize=%d\n", k, l , HalfSize);
					TRACE("i = %d, j= %d , r=%d , c=%d\n", i, j , r,c);
				}

				if ( cor[i][j] < cor[k][l] )  /*  當前點必須為局部極大值 **/
				{
					m = 50;
					bLocalMaxFlag = FALSE;
					break ;  
				}

				if ( (m*m+n*n) * 9 > HalfSize*HalfSize ) 
				{
					total += cor[k][l];
					count++;
				}
				else
				{
					nei += cor[k][l];
					neicou++;
				}
			}

			if( ( cor[i][j] > (float) fDist*sigma ) && bLocalMaxFlag && 
				( nei * count > PEAKPROPB * total * neicou ) )
			{
				ASSERT(len < BUFFERSIZE );
				PeakAddmem(posspeak,num,&len,i,j);
				num++;
			}
		}

		/*  對預選出的峰進行合并,篩選  */
		do 
		{
			lenbak = len;

			for (int m=0;m<len;m++) 
			{
				count=1;
				totalx = posspeak[m].x;
				totaly = posspeak[m].y;
				int n = m;
				while(++n < len)
				{
					if (PeakDistance(posspeak[m],posspeak[n])<9) 
					{
						totalx += posspeak[n].x*posspeak[n].time;
						totaly += posspeak[n].y*posspeak[n].time;
						count += posspeak[n].time;
						PeakDelmem(posspeak,n,&len);
					}
				}
				posspeak[m].x = totalx/count;
				posspeak[m].y = totaly/count;
				posspeak[m].time = count;
			}
		} while (lenbak!=len);

		/* 多于一個預選峰時,減小模板尺寸繼續(xù)搜索 */
		if (len>1)
		{
			float max = cor[(int) posspeak[0].y ][ (int) posspeak[0].x ] ;
			frow = posspeak[0].y ;
			fcol = posspeak[0].x ;

			for (i=0;i<len;i++) 
			{
				/* 保存此級搜索出的滿足條件的峰 */
				if (cor[(int)(posspeak[i].y) ][ (int)(posspeak[i].x)] > max) 
				{
					frow = posspeak[i].y ;
					fcol = posspeak[i].x ;
					max = cor[(int)(posspeak[i].y)][(int)(posspeak[i].x)];
				}
			}
		}
		else  /* 否則作出判決 */
			break;
	}

	/* 只有一個滿足約束條件的峰,即為所求 */
	if (len==1) 
	{
		frow = posspeak[0].y ;
		fcol = posspeak[0].x ;
	}

	/* 輸出選擇的峰 */
	ret.x = (int) (fcol+0.5) ;
	ret.y = (int) (frow+0.5) ;
	
	m_CorPot.x = ret.x;
	m_CorPot.y = ret.y;

	if(fMax < -fMin) 
		m_CorPot.cor = fMax - cor[ret.y][ret.x];
	else 
		m_CorPot.cor = cor[ret.y][ret.x] + fMin;

	return;
}

NPOT CMatchPeak::GetPeakPot()
{
	if( ! bProced ) 
		Processing();

	return m_CorPot;
}

NPOT CMatchPeak::GetMinPot()
{
	if( ! bProced ) 
		Processing();

	return m_MinPot;
}

NPOT CMatchPeak::GetMaxPot()
{
	if( ! bProced ) 
		Processing();

	return m_MaxPot;
}

BOOL CMatchPeak::SaveDBSOrgPeakPotToFile( CString txtfile , SPARMS parm , CString memo)
{
	if( ! bProced ) 
		Processing();

	if( ! parm.bValid ) return TRUE;


	FILE *fp;
	if( (fp = fopen( txtfile, "a+" )) == NULL )
	{
		AfxMessageBox(txtfile + "  can not be opened for writting!");
		return FALSE;
	}

	FPOINT maxpt  = parm.TranToOrg(m_MaxPot.x, m_MaxPot.y);
	FPOINT minpt  = parm.TranToOrg(m_MinPot.x, m_MinPot.y);
	FPOINT findpt = parm.TranToOrg(m_CorPot.x, m_CorPot.y);
	float x = parm.localx;
	float y = parm.localy;

	fprintf(fp,"peak:  Max: (%6.2f,%6.2f)  Min: (%6.2f,%6.2f)  Find: (%6.2f,%6.2f)  %s \n", 
				maxpt.x , maxpt.y , minpt.x , minpt.y , findpt.x , findpt.y ,	memo );
	fprintf(fp,"Err:   Max: (%6.2f,%6.2f)  Min: (%6.2f,%6.2f)  Find: (%6.2f,%6.2f)  %s \n", 
				maxpt.x-x , maxpt.y-y , minpt.x-x , minpt.y-y , findpt.x-x , findpt.y-y , memo );
	fclose(fp);

	return TRUE;
}

BOOL CMatchPeak::SaveDBSMapPeakPotToFile( CString txtfile , SPARMS parm , CString memo)
{
	if( ! bProced ) 
		Processing();

	FILE *fp;
	if( (fp = fopen( txtfile, "a+" )) == NULL )
	{
		AfxMessageBox(txtfile + "  can not be opened for writting!");
		return FALSE;
	}

	int x = parm.findx;
	int y = parm.findy;

	fprintf(fp,"peak:  Max: % .3f(%3d,%3d)  Min: % .3f(%3d,%3d)  Find: % .3f(%3d,%3d)   %s \n", 
				(float)m_MaxPot.cor , m_MaxPot.x, m_MaxPot.y , 
				(float)m_MinPot.cor , m_MinPot.x, m_MinPot.y , 
				(float)m_CorPot.cor, m_CorPot.x, m_CorPot.y,
				memo );

	if(parm.bValid )
	{
		fprintf(fp,"Err:   Max:       (%3d,%3d)  Min:       (%3d,%3d)  Find:       (%3d,%3d)   %s \n", 
				m_MaxPot.x - x, m_MaxPot.y - y , 
				m_MinPot.x - x, m_MinPot.y - y , 
				m_CorPot.x - x, m_CorPot.y - y,
				memo );
	}

	fclose(fp);

	return TRUE;
}

BOOL CMatchPeak::SavePeakPotToFile( COORDINATE local , CString txtfile , CString memo)
{
	if( ! bProced ) 
		Processing();

	FILE *fp;
	if( (fp = fopen( txtfile, "a+" )) == NULL )
	{
		AfxMessageBox(txtfile + "  can not be opened for writting!");
		return FALSE;
	}

	fprintf(fp,"NO=%02d local:(%3d,%3d)  Max: % .3f (%3d,%3d) dif:(%3d,%3d) Min: % .3f (%3d,%3d) dif:(%3d,%3d) Find: % .3f (%3d,%3d) dif:(%3d,%3d)  %s \n", 
				local.numb , local.x , local.y ,
				(float)m_MaxPot.cor , m_MaxPot.x, m_MaxPot.y , m_MaxPot.x - local.x, m_MaxPot.y - local.y,
				(float)m_MinPot.cor , m_MinPot.x, m_MinPot.y , m_MinPot.x - local.x, m_MinPot.y - local.y,
				(float)m_CorPot.cor , m_CorPot.x, m_CorPot.y , m_CorPot.x - local.x, m_CorPot.y - local.y,
				memo );
	fclose(fp);

	return TRUE;
}

void CMatchPeak::ClearFile( CString txtfile)
{
	FILE *fp;
	if( (fp = fopen( txtfile, "wt+" )) == NULL )
	{
		AfxMessageBox(txtfile + "  can not be opened for writting!");
		return ;
	}

	fclose(fp);

	return ;
}

void CMatchPeak::SaveStringToFile( CString txtfile , CString memo)
{
	FILE *fp;
	if( (fp = fopen( txtfile, "a+" )) == NULL )
	{
		AfxMessageBox(txtfile + "  can not be opened for writting!");
		return ;
	}

	fprintf(fp,"%s \n", memo );

	fclose(fp);

	return ;
}

void CMatchPeak::SaveDBSResultToFile( CString txtfile, NPOT retc , NPOT retl, NPOT retr, COORDINATE local ,int ErrSize)
{
	FILE *fp;
	if( (fp = fopen( txtfile, "a+" )) == NULL )
	{
		AfxMessageBox(txtfile + " can not be opened for writting!");
		return ;
	}

#if ERROR_RADIUS
	BOOL bC = (-local.x+retc.x)*(-local.x+retc.x) + (-local.y+retc.y)*(-local.y+retc.y) > ErrSize*ErrSize ;
	BOOL bL = (-local.x+retl.x)*(-local.x+retl.x) + (-local.y+retl.y)*(-local.y+retl.y) > ErrSize*ErrSize ;
	BOOL bR = (-local.x+retr.x)*(-local.x+retr.x) + (-local.y+retr.y)*(-local.y+retr.y) > ErrSize*ErrSize ;
#else
	BOOL bC = fabs(-local.x+retc.x) > ErrSize || fabs(-local.y+retc.y) > ErrSize ;
	BOOL bL = fabs(-local.x+retl.x) > ErrSize || fabs(-local.y+retl.y) > ErrSize ;
	BOOL bR = fabs(-local.x+retr.x) > ErrSize || fabs(-local.y+retr.y) > ErrSize ;
#endif
	fprintf(fp,"NO=%02d local: (%3d,%3d)   ", local.numb, local.x, local.y );

	fprintf(fp,"C:% .3f(%3d,%3d) dif:(%3d,%3d)  %c  ", retc.cor, retc.x , retc.y, -local.x + retc.x , -local.y + retc.y , (bC ? 'x':' ') );
	fprintf(fp,"L:% .3f(%3d,%3d) dif:(%3d,%3d)  %c  ", retl.cor, retl.x , retl.y, -local.x + retl.x , -local.y + retl.y , (bL ? 'x':' ') );
	fprintf(fp,"R:% .3f(%3d,%3d) dif:(%3d,%3d)  %c  ", retr.cor, retr.x , retr.y, -local.x + retr.x , -local.y + retr.y , (bR ? 'x':' ') );
	fprintf(fp,"\n");

	fclose(fp);

	return ;
}

void CMatchPeak::SaveDBSResultToFile( CString txtfile, NPOT ret[9], int Numbers , COORDINATE local ,int ErrSize)
{
	FILE *fp;
	if( (fp = fopen( txtfile, "a+" )) == NULL )
	{
		AfxMessageBox(txtfile + " can not be opened for writting!");
		return ;
	}

	BOOL flag[9];
	int errx[9],erry[9];

	for(int i=0;i<Numbers;i++)
	{
		errx[i] = -local.x+ret[i].x;
		erry[i] = -local.y+ret[i].y;
#if ERROR_RADIUS
		flag[i] = errx[i]*errx[i] + erry[i]*erry[i] > ErrSize*ErrSize ;
#else
		flag[i] = fabs( errx[i] ) > ErrSize || fabs( erry[i] ) > ErrSize ;
#endif
	}

	errx[8] = -local.x+ret[8].x;
	erry[8] = -local.y+ret[8].y;
#if ERROR_RADIUS
	flag[8] = errx[8]*errx[8] + erry[8]*erry[8] > ErrSize*ErrSize ;
#else
	flag[8] = fabs( errx[8] ) > ErrSize || fabs( erry[8] ) > ErrSize ;
#endif

	fprintf(fp,"NO=%02d local: (%3d,%3d)   ", local.numb, local.x, local.y );
	fprintf(fp,"Fus:"); 
	fprintf(fp,"% .3f(%3d,%3d) dif:(%3d,%3d)  %c  ", ret[8].cor, ret[8].x , ret[8].y, errx[8], erry[8] , ( flag[8] ? 'x':' ') );

	for( i=0;i<Numbers;i++)
	{
		fprintf(fp,"%s:" , Memo[i]); 
		fprintf(fp,"% .3f(%3d,%3d) dif:(%3d,%3d)  %c  ", ret[i].cor, ret[i].x , ret[i].y, errx[i], erry[i] , ( flag[i] ? 'x':' ') );
	}
	fprintf(fp,"\n");

	fclose(fp);

	return ;
}

void CMatchPeak::SaveResultToFile( CString txtfile, NPOT ret , COORDINATE local ,int ErrSize)
{
	FILE *fp;
	if( (fp = fopen( txtfile, "a+" )) == NULL )
	{
		AfxMessageBox(txtfile + " can not be opened for writting!");
		return ;
	}

	if(ErrSize == -1)
	{
		fprintf(fp,"NO=%04d %.4f %d %d\n", local.numb, ret.cor , ret.x , ret.y );
	}
	else
	{
		fprintf(fp,"NO=%02d local: (%3d,%3d)  find: % .5f (%3d,%3d)  diff: (%3d,%3d)", 
			local.numb, local.x, local.y,
			ret.cor , ret.x , ret.y,
			-local.x + ret.x , -local.y + ret.y );
#if ERROR_RADIUS
		if(	(-local.x+ret.x)*(-local.x+ret.x) + (-local.y+ret.y)*(-local.y+ret.y) > ErrSize*ErrSize )
			fprintf(fp,"    x\n");
#else
		if(	abs(-local.x+ret.x) > ErrSize || abs(-local.y+ret.y) > ErrSize )
			fprintf(fp,"    x\n");
#endif
		else
			fprintf(fp,"     \n");
	}

	fclose(fp);

	return ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人晚上爱看视频| 欧美一区二区三区免费视频| 欧美性受xxxx| 久久久久久久久免费| 亚洲精品网站在线观看| 黄色精品一二区| 欧美日韩中文字幕一区二区| 国产欧美一二三区| 久久精品国产精品青草| 在线一区二区观看| 国产精品美女久久久久久久久 | 色哟哟一区二区在线观看| 精品久久久久久无| 午夜伦欧美伦电影理论片| 国产成人av影院| 欧美大片在线观看| 亚洲18色成人| 欧美午夜不卡视频| 玖玖九九国产精品| 欧美日韩国产另类不卡| 一区二区三区高清在线| 91在线观看美女| 国产精品视频一二三区| 国产精品一区二区三区乱码 | 国产欧美日韩另类一区| 久久精工是国产品牌吗| 4hu四虎永久在线影院成人| 亚洲欧美国产高清| 99综合影院在线| 综合电影一区二区三区 | 韩国女主播成人在线| 日韩一区二区三区视频在线观看| 图片区小说区区亚洲影院| 欧美午夜精品一区| 视频一区中文字幕| 欧美日韩国产高清一区二区三区| 亚洲成av人**亚洲成av**| 在线日韩国产精品| 天天色综合成人网| 欧美videos大乳护士334| 精品系列免费在线观看| 久久免费午夜影院| 国产成人免费视频网站| 国产精品美女久久久久久久| 91色porny在线视频| 亚洲综合精品久久| 欧美卡1卡2卡| 久久疯狂做爰流白浆xx| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲一区av在线| 91 com成人网| 国产精品羞羞答答xxdd| 欧美激情一区二区三区不卡| 91网站最新地址| 国产麻豆精品theporn| 久久亚洲影视婷婷| 成人精品在线视频观看| 一级精品视频在线观看宜春院| 在线播放欧美女士性生活| 国内精品不卡在线| 中文字幕中文字幕一区| 欧美吞精做爰啪啪高潮| 久久99精品国产麻豆不卡| 亚洲国产精品传媒在线观看| 在线观看免费一区| 日本三级韩国三级欧美三级| 国产欧美精品一区二区色综合 | 琪琪一区二区三区| 久久久99免费| 在线观看国产91| 黄一区二区三区| 一区二区在线观看免费视频播放| 日韩一区二区精品葵司在线 | 亚洲人成网站在线| 精品久久久久久久久久久久久久久 | 亚洲 欧美综合在线网络| 久久久精品一品道一区| 欧美日韩午夜在线视频| 国产成人a级片| 日韩精品欧美精品| 亚洲欧美日韩国产手机在线| 精品日韩一区二区三区| 色综合天天综合在线视频| 久久er99精品| 黄一区二区三区| 五月天网站亚洲| 中文字幕亚洲一区二区va在线| 欧美一级精品大片| 91久久奴性调教| 成人精品免费看| 激情五月婷婷综合| 丝袜诱惑制服诱惑色一区在线观看 | 美女爽到高潮91| 亚洲小说欧美激情另类| 亚洲国产精品ⅴa在线观看| 制服丝袜在线91| 欧美三级日韩三级国产三级| 91色.com| 成人激情免费视频| 国产成人在线视频网站| 美女网站一区二区| 香蕉久久一区二区不卡无毒影院| **网站欧美大片在线观看| 国产欧美日韩三级| 久久精品一区蜜桃臀影院| 精品国产一区久久| 欧美一区二区福利视频| 欧美精品久久一区| 欧美久久久久久久久中文字幕| 在线看国产一区二区| 色欧美88888久久久久久影院| 不卡av在线免费观看| 国产成人精品一区二区三区四区| 国产精一品亚洲二区在线视频| 久久电影网站中文字幕| 另类专区欧美蜜桃臀第一页| 精品亚洲成a人在线观看| 美脚の诱脚舐め脚责91| 蜜臀av国产精品久久久久| 五月激情综合色| 日韩黄色免费电影| 美女视频网站久久| 激情五月播播久久久精品| 国产一区欧美一区| 成人免费看的视频| 91在线高清观看| 在线观看日韩高清av| 欧美欧美欧美欧美首页| 国产精品免费久久| 亚洲欧美视频一区| 午夜成人免费视频| 美日韩一区二区| 国产成人精品在线看| 91性感美女视频| 51久久夜色精品国产麻豆| 精品久久久久久综合日本欧美| 久久精品夜色噜噜亚洲aⅴ| 国产精品妹子av| 亚洲高清一区二区三区| 日本免费在线视频不卡一不卡二| 国产美女在线观看一区| 91免费版pro下载短视频| 欧美午夜精品免费| 久久久久国产一区二区三区四区 | 日韩精品每日更新| 国内精品嫩模私拍在线| 99久久精品一区| 在线不卡欧美精品一区二区三区| 精品久久99ma| 亚洲免费看黄网站| 免费观看在线综合| 99久久精品国产精品久久| 欧美精品色综合| 中文字幕第一页久久| 亚洲一区二区三区不卡国产欧美| 韩国av一区二区三区在线观看| 成人一级片网址| 91精品麻豆日日躁夜夜躁| 国产欧美一区二区精品秋霞影院 | 亚洲18女电影在线观看| 国产精品91xxx| 欧美精品在线一区二区三区| 久久午夜电影网| 天堂成人国产精品一区| 99视频在线精品| wwwwww.欧美系列| 亚洲国产aⅴ天堂久久| 成人av午夜影院| 日韩欧美国产系列| 亚洲一级二级三级| 国产成人亚洲综合a∨婷婷| 欧美人妖巨大在线| 亚洲精品视频在线观看免费| 国产伦精品一区二区三区免费| 欧美精品色一区二区三区| 综合久久一区二区三区| 国产成人丝袜美腿| 欧美videos中文字幕| 天堂成人国产精品一区| 日本高清不卡视频| 国产精品久久久久久久久图文区 | 久久精品国产精品青草| 欧美美女黄视频| 亚洲一区二区美女| 在线欧美小视频| 亚洲乱码国产乱码精品精98午夜| 国产白丝精品91爽爽久久| 久久丝袜美腿综合| 麻豆91精品视频| 欧美一区二区三区视频免费| 亚洲午夜成aⅴ人片| 在线免费不卡视频| 亚洲一区二区三区四区在线观看 | 91黄色免费网站| 中文字幕一区在线观看视频| 成人福利视频网站| 欧美激情综合在线| 成人性视频免费网站| 亚洲国产精品v| 99精品一区二区|