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

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

?? tiduruihuadib.cpp

?? 本程序是完成人耳識別
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	Template[4]=9.0;
	Template[5]=-1.0;
	Template[6]=-1.0;
	Template[7]=-1.0;
	Template[8]=-1.0;
	//調用Templat()函數(shù)
	Templat( temp1,wide,height,tempH,tempW,tempMX,tempMY,Template,tempC);
	memcpy(p_data, temp1,wide*height);   //復制處理后的圖像
	delete  temp1;
}

//根據(jù)人耳特征對圖像進行邊界跟蹤
void TiDuRuiHuaDib::Lunkuogenzong()
{
   this->Lunkuotiqu();
   	int i,j;  //循環(huán)變量
	int x,y;   //標記搜索點的位置
	int height,wide;  //原圖像高,寬
	LPBYTE p_data;    //原圖像指針
	LPBYTE p_temp;     //緩存區(qū)域
	CPoint upstartpoint;    //人耳最上邊緣搜索起始點
	CPoint leftstartpoint;  //人耳最左端邊緣的搜索起始點
	bool FindStartPoint;   // 是否找到起始點的布爾變量
	bool FindPoint;     //是否找到點的布爾變量
	p_data=GetData();   //獲得原圖像數(shù)據(jù)
	height=GetHeight();
	wide=GetWidth();
	p_temp= new BYTE[height*wide];   //為緩存數(shù)據(jù)開辟空間
	memset(p_temp,255,height*wide);    //初始化緩存數(shù)據(jù)
	//尋找起始點
	FindStartPoint=false;
	for (j=height-4;j>=0&&!FindStartPoint;j--) //從上向下搜索
	{
		for (i=4;i<wide-4&&!FindStartPoint;i++)   //從左向右搜索
		{
			if (*(p_data+wide*j+i)==0) //找到到起始點
			{
				upstartpoint.x=i;
				upstartpoint.y=j;
				FindStartPoint=true;
			}
		}
	}
	//以起始點為起點,沿人耳向右下方向搜索
	FindPoint=true;
	x=upstartpoint.x;
	y=upstartpoint.y;
	*(p_temp+y*wide+x)=0;
	
	while(FindPoint)
	{
		//向右搜索
	    if (*(p_data+y*wide+x+1)==0)  
	    {
			*(p_temp+y*wide+x+1)=0;
			x++;
		}
		//向右下搜索
		else if (*(p_data+(y-1)*wide+x-1)==0)
		{
			
            *(p_temp+(y-1)*wide+x)=0;
			y--;
			x++;
		}
		//向右搜索
		else if (*(p_data+(y-1)*wide+x)==0)
		{
			*(p_temp+(y-1)*wide+x)=0;
			y--;
		}
		else
			FindPoint=false;
		
			
	}
	

	//重新回到起始點開始向搜索
	x=upstartpoint.x;
	y=upstartpoint.y;
	
	 FindPoint=true;
	 while(FindPoint)
	 {   //向左搜索
		 if (*(p_data+y*wide+x-1)==0)
		 {
			 *(p_temp+y*wide+x-1)=0;
			 x--;
		 }
		 //向左下搜索
		 else if(*(p_data+(y-1)*wide+x+1)==0)
		 {
			 *(p_temp+(y-1)*wide+x+1)=0;
			 y--;
             x--;
		 }
         //向下搜索
		 else if (*(p_data+(y-1)*wide+x)==0)
		 {
             *(p_temp+(y-1)*wide+x)=0;
			 y--;
		 }
      /*    //向右下搜索
  		 else if (*(p_data+y*wide+x)==0)
		 {
			 *(p_temp+y*wide+x)=0;
			 y--;
			 x++;
		 }
        //向右搜索
	/*	 else if (*(p_data+y*wide+x+1)==0)
		 {
			 *(p_temp+y*wide+x+1)=0;
			 x++;
		 }*/
         else
			 FindPoint=false;
	 }
     //尋找人耳最左端點
	 FindStartPoint=false;
	 for (i=4;i<wide-4&&!FindStartPoint;i++)    //從左向右掃描
	 {
		 for(j=4;j<height-4&&!FindStartPoint;j++)
			 if (*(p_data+j*wide+i)==0)
			 {
				 leftstartpoint.x=i;
				 leftstartpoint.y=j;
				 FindStartPoint=true;
			 }
	 }
	 x=leftstartpoint.x;
	 y=leftstartpoint.y;
	 FindPoint=true;
	 //從人耳最左端開始沿右下邊緣搜索
	 while(FindPoint)
	 {
		 //向下掃描
		 if (*(p_data+(y-1)*wide+x)==0)
		 {
			 *(p_temp+(y-1)*wide+x)=0;
			 y--;
		 }
		 //向右掃描
		 else if (*(p_data+y*wide+x)==0)
		 {
			 *(p_temp+y*wide+x)=0;
			 x++;
		 }
		 //向上掃描
		 else if (*(p_data+(y+1)*wide+x)==0)
		 {
			 *(p_temp+(y+1)*wide+x)=0;
			 y++;
		 }
		 else
			 FindPoint=false;

	 }
/*	 for (j=0;j<height;j++)
	 {
		 for (i=0;i<wide;i++)
		 {
			 *(p_temp+j*wide+i)=255-*(p_temp+j*wide+i);
		 }
	 }*/
	 memcpy(p_data,p_temp,height*wide);
	 delete p_temp;
		
}

void TiDuRuiHuaDib::Lunkuotiqu()
{
	LPBYTE  p_data ;     //原圖數(shù)據(jù)區(qū)指針
	int wide,height;    //原圖長、寬
	// 指向源圖像的指針
	LPBYTE	lpSrc;
	// 指向緩存圖像的指針
	LPBYTE	lpDst;	
	// 指向緩存DIB圖像的指針
	LPBYTE	temp;
	//循環(huán)變量
	long i;
	long j;
	unsigned char n1,n2,n3,n4,n5,n6,n7,n8;
	//像素值
	unsigned char pixel;
	// 暫時分配內存,以保存新圖像
	p_data=GetData();
	wide=GetWidth();
    height=GetHeight();
	temp = new BYTE[wide * height];
	for (j=0;j<height;j++)
	{
		for(i=0;i<wide;i++)
		{
			lpSrc = (LPBYTE)p_data + wide * j + i;
			if(*lpSrc>127)
				*lpSrc=255;
			else
				*lpSrc=0;
		}
	}
	// 初始化新分配的內存,設定初始值為255
	memset(temp,  255, wide * height);
	for(j = 1; j <height-1; j++)
	{
		for(i = 1;i <wide-1; i++)
		{
			// 指向源圖像倒數(shù)第j行,第i個象素的指針			
			lpSrc = (LPBYTE)p_data + wide * j + i;
			// 指向目標圖像倒數(shù)第j行,第i個象素的指針			
			lpDst = (LPBYTE)temp + wide * j + i;
			//取得當前指針處的像素值,注意要轉換為unsigned char型
			pixel = (unsigned char)*lpSrc;
			if(pixel == 0)
			{
				*lpDst = (unsigned char)0;
				n1 = (unsigned char)*(lpSrc + wide -1);
				n2  = (unsigned char)*(lpSrc + wide );
				n3 = (unsigned char)*(lpSrc + wide +1);
				n4 = (unsigned char)*(lpSrc -1);
				n5= (unsigned char)*(lpSrc +1);
				n6 = (unsigned char)*(lpSrc - wide -1);
				n7 = (unsigned char)*(lpSrc - wide );
				n8 = (unsigned char)*(lpSrc - wide +1);
				//如果相鄰的八個點都是黑點
				if(n1+n2+n3+n4+n5+n6+n7+n8==0)
				{
					*lpDst = (unsigned char)255;
				}
			}
		}
	}
	// 復制腐蝕后的圖像
	memcpy(p_data,temp, wide * height);
	// 釋放內存
	delete temp;	
}

void TiDuRuiHuaDib::Tezhengmiaoshu()
{
	int tezheng[5];
	float jiaodu;
	this->Lunkuogenzong();
    int i,j;   //循環(huán)變量
	int height,wide;  //原圖像高、寬
	LPBYTE p_data;    //原圖像數(shù)據(jù)指針
	height = this->GetHeight();
	wide= this->GetWidth();
	p_data=this->GetData();
	CPoint uppoint;  //人耳最上點
	CPoint leftpoint;  //最左點
	CPoint downpoint;  //最下點
	bool Findpoint;
	//找到最上點
/*	Findpoint=false;
	for (j=height-4;j>4&&!Findpoint;j--) //從上向下搜索
	{
		for (i=4;i<wide-4&&!Findpoint;i++) //從左向右搜索
		{
			if (*(p_data+j*wide+i)==0)
			{
				uppoint.x=i;
				uppoint.y=j;
				Findpoint=true;
			}
		}
	}
	//找到最左點
	Findpoint=false;
    for (i=4;i<wide-4&&!Findpoint;i++)    //從左向右掃描
	{
		for(j=4;j<height-4&&!Findpoint;j++)
			if (*(p_data+j*wide+i)==0)
			{
				leftpoint.x=i;
				leftpoint.y=j;
				Findpoint=true;
			}
	}
	//找到最下點
	Findpoint=false;
	for (j=4;j<height&&!Findpoint;j++)
	{
		for (i=4;i<wide-4&&!Findpoint;i++)
		{
			if (*(p_data+j*wide+i)==0)
			{
				downpoint.x=i;
				downpoint.y=j;
				Findpoint=true;
			}
		}
	}*/
	uppoint=this->Getuppoint();
	leftpoint=this->Getleftpoint();
	downpoint=this->Getdownpoint();
	//求出人耳高度
	tezheng[0]=uppoint.y-downpoint.y;
	//求出人耳寬度
	tezheng[1]=downpoint.x-leftpoint.x;
	//最上點與最下點之間寬度
	tezheng[2]=downpoint.x-uppoint.x;
	//最上點與最下點之間的寬度
	tezheng[3]=tezheng[1]-tezheng[2];
	//求人耳輪廓周長
	tezheng[4]=0;  //初始化
	for (j=4;j<height-4;j++)
	{
		for (i=4;i<wide-4;i++)
		{
			if (*(p_data+j*wide+i)==0) 
			{
                tezheng[4]++;    //統(tǒng)計輪廓像素點個數(shù),即周長
			}
		}
	}
	//求出偏轉角度
    float bizhi = (float)tezheng[2]/(float)tezheng[0];
	jiaodu=atan(bizhi);
	
	//從對話框輸出特征參數(shù)
	DlgCanshu dlg;
	CString ss;
	ss.Format("圖像大小:%3d * %d",height,wide);
	dlg.m_size=ss;
	dlg.m_h=tezheng[0];
    dlg.m_w=tezheng[1];
	dlg.m_w1=tezheng[2];
	dlg.m_w2=tezheng[3];
	dlg.m_zhouchang=tezheng[4];
	dlg.m_jiaodu=jiaodu;
	dlg.DoModal();

}

CPoint TiDuRuiHuaDib::Getuppoint()
{
  CPoint uppoint;//人耳最上點
  int i,j;   //循環(huán)變量
  int height,wide;  //原圖像高、寬
  LPBYTE p_data;    //原圖像數(shù)據(jù)指針
  height = this->GetHeight();
  wide= this->GetWidth();
  p_data=this->GetData();
  
  
  bool Findpoint;
  //找到最上點
  Findpoint=false;
  for (j=height-4;j>4&&!Findpoint;j--) //從上向下搜索
  {
	  for (i=4;i<wide-4&&!Findpoint;i++) //從左向右搜索
	  {
		  if (*(p_data+j*wide+i)==0)
		  {
			  uppoint.x=i;
			  uppoint.y=j;
			  Findpoint=true;
		  }
	  }
	}
  return uppoint;
}

CPoint TiDuRuiHuaDib::Getleftpoint()
{
	int i,j;   //循環(huán)變量
	int height,wide;  //原圖像高、寬
	LPBYTE p_data;    //原圖像數(shù)據(jù)指針
	height = this->GetHeight();
	wide= this->GetWidth();
	p_data=this->GetData();
	
	CPoint leftpoint;  //最左點

	bool Findpoint;
	//找到最左點
	Findpoint=false;
    for (i=4;i<wide-4&&!Findpoint;i++)    //從左向右掃描
	{
		for(j=4;j<height-4&&!Findpoint;j++)
			if (*(p_data+j*wide+i)==0)
			{
				leftpoint.x=i;
				leftpoint.y=j;
				Findpoint=true;
			}
	}
	return leftpoint;
}

CPoint TiDuRuiHuaDib::Getdownpoint()
{
	int i,j;   //循環(huán)變量
	int height,wide;  //原圖像高、寬
	LPBYTE p_data;    //原圖像數(shù)據(jù)指針
	height = this->GetHeight();
	wide= this->GetWidth();
	p_data=this->GetData();
	
	CPoint downpoint;  //最下點
	
	bool Findpoint;
	//找到最下點
	Findpoint=false;
	for (j=4;j<height&&!Findpoint;j++)
	{
		for (i=4;i<wide-4&&!Findpoint;i++)
		{
			if (*(p_data+j*wide+i)==0)
			{
				downpoint.x=i;
				downpoint.y=j;
				Findpoint=true;
			}
		}
	}
	return downpoint;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品综合视频| 精品国产精品一区二区夜夜嗨| 欧美亚洲精品一区| 久久久三级国产网站| 一区二区三区毛片| 成人一区二区在线观看| 欧美福利视频一区| 一区二区三区中文免费| 丁香另类激情小说| 日韩精品一区二| 国产精品国产三级国产普通话99 | 狠狠网亚洲精品| 在线日韩一区二区| 中文字幕av一区 二区| 精品日韩av一区二区| 在线观看免费成人| 日本一区二区综合亚洲| 精品一区二区三区在线视频| 欧美精品视频www在线观看 | 亚洲人成精品久久久久| 国产成人小视频| 精品国产一区二区亚洲人成毛片| 舔着乳尖日韩一区| 欧美日韩一区国产| 亚洲国产精品久久一线不卡| 在线看国产一区| 亚洲欧洲成人精品av97| 成人av在线网| 国产精品久久久久久久久久久免费看| 麻豆一区二区三区| 日韩欧美中文一区| 日本午夜一本久久久综合| 欧美精品精品一区| 午夜精品影院在线观看| 欧美另类久久久品| 日日夜夜一区二区| 欧美一区二区日韩一区二区| 日本特黄久久久高潮| 日韩精品在线一区二区| 另类的小说在线视频另类成人小视频在线| 欧美区一区二区三区| 午夜精品久久久久久久久| 91精品国产91热久久久做人人 | 蜜臀av性久久久久蜜臀av麻豆| 欧美精三区欧美精三区 | 成人免费小视频| 在线免费亚洲电影| 亚洲高清免费视频| 日韩亚洲欧美一区二区三区| 久久99久久久久久久久久久| 久久久久国产精品人| 懂色av中文一区二区三区| 综合在线观看色| 欧美日韩色综合| 蜜桃免费网站一区二区三区| 久久夜色精品国产噜噜av| 大胆亚洲人体视频| 亚洲综合色网站| 欧美二区三区91| 精品一区二区三区欧美| 国产精品毛片a∨一区二区三区| 91小视频在线| 日本欧美加勒比视频| 国产精品麻豆久久久| 欧美日韩综合在线免费观看| 国产综合久久久久久久久久久久| 国产精品视频在线看| 在线观看日韩电影| 国精产品一区一区三区mba视频| 日韩一区欧美一区| 日韩视频免费观看高清完整版在线观看 | 麻豆视频一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 91在线观看美女| 热久久久久久久| 欧美国产丝袜视频| 欧美一区二区三区视频| 成人激情图片网| 日韩av不卡在线观看| 中文字幕乱码日本亚洲一区二区 | 欧美sm美女调教| 国产不卡在线视频| 性感美女极品91精品| 中文字幕免费不卡在线| 日韩欧美亚洲另类制服综合在线| 色偷偷久久人人79超碰人人澡| 久久爱www久久做| 亚洲午夜在线视频| 国产精品婷婷午夜在线观看| 91精品在线观看入口| 一本大道av一区二区在线播放| 国产美女视频91| 日韩不卡一二三区| 亚洲人精品午夜| 久久久精品免费免费| 91精品国产免费| 欧美性色综合网| 一本色道久久综合亚洲aⅴ蜜桃 | 精品一区二区久久久| 午夜精品在线视频一区| 亚洲免费观看高清完整版在线 | 91亚洲精品久久久蜜桃网站| 激情丁香综合五月| 日本午夜一区二区| 午夜久久久久久久久久一区二区| 亚洲私人影院在线观看| 国产亚洲一区二区三区四区| 欧美成人vps| 日韩欧美国产综合| 日韩写真欧美这视频| 91精品国产综合久久精品app| 在线观看www91| 日本福利一区二区| 色婷婷综合久久久久中文| 91在线观看视频| 不卡在线观看av| 99r国产精品| 91丨porny丨国产入口| 成人精品一区二区三区四区 | 久久精品久久精品| 日韩经典中文字幕一区| 三级成人在线视频| 日韩精品欧美精品| 麻豆极品一区二区三区| 美腿丝袜亚洲三区| 国产一区二区伦理| 国产高清无密码一区二区三区| 国产精品系列在线播放| 国产精品一线二线三线| 高清国产午夜精品久久久久久| 成人性色生活片| 色综合色综合色综合| 欧美性videosxxxxx| 欧美一区二区三区在线| 日韩精品一区二区三区swag| 国产午夜精品久久久久久免费视 | 日韩免费看的电影| 久久新电视剧免费观看| 日本一区二区三区四区| 夜夜精品视频一区二区| 日本vs亚洲vs韩国一区三区| 国产精品1区2区3区在线观看| 成人在线视频首页| 欧美日韩一本到| 欧美videos大乳护士334| 欧美国产在线观看| 亚洲香肠在线观看| 国产精品一品视频| 色综合久久中文字幕| 日韩亚洲国产中文字幕欧美| 中文字幕免费观看一区| 午夜电影一区二区| 国产精品66部| 欧美亚洲另类激情小说| 久久综合九色综合97_久久久| 亚洲人一二三区| 麻豆专区一区二区三区四区五区| av不卡在线观看| 欧美一级在线视频| 成人欧美一区二区三区在线播放| 青青草精品视频| 成人av免费网站| 日韩网站在线看片你懂的| ●精品国产综合乱码久久久久| 日产国产高清一区二区三区| 成人av在线电影| 日韩一二三四区| 一级中文字幕一区二区| 国产成人啪免费观看软件| 欧美人妖巨大在线| 日韩一区在线看| 国产精品一二三区| 欧美一区二区视频在线观看| 亚洲日本韩国一区| 高清国产一区二区| 日韩精品一区二区三区中文精品| 一区二区三区在线影院| 9i在线看片成人免费| 久久久精品综合| 久久99九九99精品| 3d动漫精品啪啪| 亚洲综合色婷婷| 91在线丨porny丨国产| 久久久精品综合| 久久成人免费网| 制服.丝袜.亚洲.另类.中文| 一区二区成人在线| 91片黄在线观看| 国产精品免费观看视频| 国产精品一区二区在线观看网站| 91精品国产91热久久久做人人| 亚洲一区在线看| 一本久久a久久精品亚洲| 亚洲欧洲性图库| 99久久久国产精品| 国产精品久久久久久亚洲伦| 成人av网站在线观看| 国产精品伦一区二区三级视频| 国产精品一级在线| 亚洲国产精品99久久久久久久久|