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

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

?? mydiblib.h

?? 本系統是一個基于神經網絡的文字識別系統
?? H
?? 第 1 頁 / 共 4 頁
字號:
	}

	// 將新的圖像的內容拷貝到舊的圖像中
	memcpy(lpDIBBits,lpNewDIBBits,lLineBytes*lHeight);

   // 解除鎖定
	::GlobalUnlock ((HGLOBAL)hDIB);
}



/******************************************************************
*
*  函數名稱:
*      StdDIBbyRect()
*
*  參數:
*     HDIB  hDIB          -圖像的句柄
*     int   tarWidth      -標準化的寬度
*     int   tarHeight     -標準化的高度
*
*  返回值:
*         無
*
*  功能:
*     將經過分割的字符,進行縮放處理使他們的寬和高一直,以方便特征的提取
*
*  說明:
*     函數中用到了,每個字符的位置信息,所以必須在執行完分割操作之后才能執行標準化操作
*
******************************************************************/
void StdDIBbyRect(HDIB hDIB, int tarWidth, int tarHeight)
{	

	//指向圖像的指針
	BYTE* lpDIB=(BYTE*)::GlobalLock ((HGLOBAL)hDIB);

	//指向象素起始位置的指針
	BYTE* lpDIBBits=(BYTE*)::FindDIBBits ((char*)lpDIB);
	
	//指向象素的指針
	BYTE* lpSrc;

	//獲取圖像的的寬度
	LONG lWidth=::DIBWidth ((char*)lpDIB);

	//獲取圖像的高度
	LONG lHeight=::DIBHeight ((char*)lpDIB);

	// 循環變量
	int	i;
	int	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes = WIDTHBYTES(lWidth * 8);

	//寬度、高度方向上的縮放因子
	double wscale,hscale;

	//開辟一塊臨時緩存區,來存放變化后的圖像信息
	LPSTR lpNewDIBBits;
	LPSTR lpDst;
 
    //緩存區的大小和原圖像的數據區大小一樣
	HLOCAL nNewDIBBits=LocalAlloc(LHND,lLineBytes*lHeight);

	//指向緩存區開始位置的指針
	lpNewDIBBits=(char*)LocalLock(nNewDIBBits);

	//指向緩存內信息的指針
	lpDst=(char*)lpNewDIBBits;

	//將緩存區的內容賦初始值
	memset(lpDst,(BYTE)255,lLineBytes*lHeight);

	//進行映射操作的坐標變量
	int i_src,j_src;

	//存放字符位置信息的結構體
	CRect rect;
	CRect rectnew;

	//先清空一個新的矩形區域鏈表以便存儲標準化后的矩形區域鏈表
	m_charRectCopy.clear ();

	//從頭到尾逐個掃描各個結點
	while(!m_charRect.empty())
	{
		//從表頭上得到一個矩形
		rect= m_charRect.front();

		//從鏈表頭上面刪掉一個
		m_charRect.pop_front();

		//計算縮放因子

		//橫坐標方向的縮放因子
		wscale=(double)tarWidth/rect.Width ();

		//縱坐標方向的縮放因子
		hscale=(double)tarHeight/rect.Height ();

		//計算標準化矩形

		//上邊界
		rectnew.top =rect.top ;

		//下邊界
		rectnew.bottom =rect.top +tarHeight;

		//左邊界
		rectnew.left =rect.left ;

		//右邊界
		rectnew.right =rectnew.left +tarWidth;

		//將原矩形框內的象素映射到新的矩形框內
		for(i=rectnew.top ;i<rectnew.bottom ;i++)
		{
			for(j=rectnew.left ;j<rectnew.right ;j++)
			{   

				//計算映射坐標
				i_src=rectnew.top +int((i-rectnew.top )/hscale);
				j_src=rectnew.left +int((j-rectnew.left )/wscale);

				//將相對應的象素點進行映射操作
				lpSrc=(unsigned char *)lpDIBBits + lLineBytes *  i_src + j_src;
				lpDst = (char *)lpNewDIBBits + lLineBytes * i + j;
				*lpDst=*lpSrc;
			}
		}
		//將標準化后的矩形區域插入新的鏈表
		m_charRectCopy.push_back (rectnew);

	
	}

	//存儲標準化后新的rect區域
    m_charRect=m_charRectCopy;

	//將緩存區的內容拷貝到圖像的數據區內
	memcpy(lpDIBBits,lpNewDIBBits,lLineBytes*lHeight);

	//解除鎖定
	::GlobalUnlock ((HGLOBAL)hDIB);
}


void Thinning(HDIB hDIB)
{
	// 指向DIB的指針
	LPSTR lpDIB=(LPSTR) ::GlobalLock((HGLOBAL)hDIB);
	
	// 指向DIB象素指針
	LPSTR    lpDIBBits;	

	// 找到DIB圖像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);	
	
	// 指向源圖像的指針
	LPSTR	lpSrc;

	//圖像的高度和寬度
	LONG lWidth;
	LONG lHeight;

	//獲取圖像的寬度
	lWidth=::DIBWidth ((char*)lpDIB);

	//獲取圖像的高度
	lHeight=::DIBHeight ((char*)lpDIB);

    //計算每行的字節數
    LONG  lLineBytes = (lWidth+3)*4/4;

	//循環變量
    int i,j;

    //建立存儲區存放2值矩陣
	BYTE *image = (BYTE*)malloc(lWidth*lHeight*sizeof(BYTE));

	//給2值矩陣賦值

	for(i=0;i<lHeight;i++)
	{
	    for(j=0;j<lWidth;j++)
		{
	      lpSrc=lpDIBBits+i*lLineBytes+j;
	    
	      if(*lpSrc==0)
	      image[i*lWidth+j]=1;

		  else
         image[i*lWidth+j]=0;
		}
	}

   //調用函數進行細化,兩種函數可以選擇

   ThinnerRosenfeld(image,lHeight,lWidth);

   //ThinnerHilditch(image,lHeight,lWidth);



   //將結果賦值到原圖像中

   for(i=0;i<lHeight;i++)
   {
     for(j=0;j<lWidth;j++)
	 {
	   lpSrc=lpDIBBits+i*lLineBytes+j;

       if(image[i*lWidth+j]==1)
	   *lpSrc=(BYTE)0;

	   else
       *lpSrc=(BYTE)255;
	 }
   
   }


 //清空內存
   free(image);
   ::GlobalUnlock ((HGLOBAL)hDIB);

	return;
}

/*****************************************************
* 
*   函數名稱:
*      Template:
*
*    參數:
*	   HDIB    hDIB         -圖像的句柄
*      double  *tem         -指向模板的指針
*      int  tem_w           -模板的寬度
*      int  tem_h           -模板的高度
*      double xishu         -模板的系數
*         
*    功能:
*	   對圖像進行模板操作
*
*    說明:
*	   為處理方便起見,模板的寬度和高度都應為奇數
*******************************************************/
 HDIB Template(HDIB hDIB,double * tem ,int tem_w,int tem_h,double xishu)
{

    //統計中間值
    double sum;

    //指向圖像起始位置的指針
    BYTE *lpDIB=(BYTE*)::GlobalLock((HGLOBAL) hDIB);

	//指向象素起始位置的指針
	BYTE *pScrBuff =(BYTE*)::FindDIBBits((char*)lpDIB);
   
	//獲取圖像的顏色信息
    int numColors=(int) ::DIBNumColors((char *)lpDIB);

    //如果圖像不是256色返回
     if (numColors!=256) 
	 {   
        //解除鎖定
	  	::GlobalUnlock((HGLOBAL) hDIB);

		//返回
		return(hDIB);
	 }
    
    //將指向圖像象素起始位置的指針,賦值給指針變量
    BYTE* oldbuf = pScrBuff;

    //循環變量
    int i,j,m,n;

	int w, h, dw;

	//獲取圖像的寬度
	w = (int) ::DIBWidth((char *)lpDIB);
	
	//獲取圖像的高度
	h = (int) ::DIBHeight((char *)lpDIB);
	
	//計算圖像每行的字節數
	dw = (w+3)/4*4;      
	
	//建立一個和原圖像大小相同的25色灰度位圖
    HDIB newhDIB=NewDIB(w,h,8);  
    
	//指向新的位圖的指針
	BYTE *newlpDIB=(BYTE*)::GlobalLock((HGLOBAL) newhDIB);

	//指向新的位圖的象素起始位置的指針 
    BYTE *destBuf = (BYTE*)FindDIBBits((char *)newlpDIB);
    
   //將指向新圖像象素起始位置的指針,賦值給指針變量
    BYTE *newbuf=destBuf; 
	
	//對圖像進行掃描
   
	//行 
    for(i=0;i<h;i++)
    {  
		//列
	   for(j=0;j<w;j++)
	   {   

		   //為統計變量賦初始值
	       sum=0;

         //對于圖像的4個邊框的象素保持原灰度不變
	     if( j<((tem_w-1)/2) || j>(w-(tem_w+1)/2) || i<((tem_h-1)/2) || i>(h-(tem_h+1)/2) )
	      *(newbuf+i*dw+j)=*(oldbuf+i*dw+j);
		 
         //對于其他的象素進行模板操作
		 else 
         { 

          //將點(i,j)點作為模板的中心
          for(m=i-((tem_h-1)/2);m<=i+((tem_h-1)/2);m++)
          {
		     for(n=j-((tem_w-1)/2);n<=j+((tem_w-1)/2);n++)
		    
             //將以點(i,j)為中心,與模板大小相同的范圍內的象素與模板對用位置的系數
			 //進行相乘并線形疊加
		     sum+=*(oldbuf+m*dw+n)* tem[(m-i+((tem_h-1)/2))*tem_w+n-j+((tem_w-1)/2)];
		  
		  }
          
		  //將結果乘上總的模板系數
          sum=(int)sum*xishu;

		  //計算絕對值
		  sum = fabs(sum);

		  //如果小于0,強制賦值為0
          if(sum<0)     
          sum=0;

		  //如果大于255,強制賦值為255
          if(sum>255)
		  sum=255;

		  //將計算的結果放到新的位圖的相應位置
	      *(newbuf+i*dw+j)=sum;
		 }
	   }
	} 
   
	//解除鎖定
	::GlobalUnlock((HGLOBAL)hDIB);
    
	//返回新的位圖的句柄
    return(newhDIB);
}
/*****************************************************
* 
*   函數名稱:
*      Template:
*
*    參數:
*	   HDIB    hDIB         -圖像的句柄
*      int  tem_w           -模板的寬度
*      int  tem_h           -模板的高度
*      
*    功能:
*	   對圖像進行中值
*
*    說明:
*	   為處理方便起見,模板的寬度和高度都應為奇數
*******************************************************/

HDIB MidFilter(HDIB hDIB,int tem_w,int tem_h)
{

    //統計中間值
    double mid;

	BYTE *temp=(BYTE*)malloc(tem_w*tem_h*sizeof(BYTE));

    //指向圖像起始位置的指針
    BYTE *lpDIB=(BYTE*)::GlobalLock((HGLOBAL) hDIB);

	//指向象素起始位置的指針
	BYTE *pScrBuff =(BYTE*)::FindDIBBits((char*)lpDIB);
   
	//獲取圖像的顏色信息
    int numColors=(int) ::DIBNumColors((char *)lpDIB);

    //如果圖像不是256色返回
     if (numColors!=256) 
	 {   
        //解除鎖定
	  	::GlobalUnlock((HGLOBAL) hDIB);

		//返回
		return(hDIB);
	 }
    
    //將指向圖像象素起始位置的指針,賦值給指針變量
    BYTE* oldbuf = pScrBuff;

    //循環變量
    int i,j,m,n;

	int w, h, dw;

	//獲取圖像的寬度
	w = (int) ::DIBWidth((char *)lpDIB);
	
	//獲取圖像的高度
	h = (int) ::DIBHeight((char *)lpDIB);
	
	//計算圖像每行的字節數
	dw = (w+3)/4*4;      
	
	//建立一個和原圖像大小相同的25色灰度位圖
    HDIB newhDIB=NewDIB(w,h,8);  
    
	//指向新的位圖的指針
	BYTE *newlpDIB=(BYTE*)::GlobalLock((HGLOBAL) newhDIB);

	//指向新的位圖的象素起始位置的指針 
    BYTE *destBuf = (BYTE*)FindDIBBits((char *)newlpDIB);
    
   //將指向新圖像象素起始位置的指針,賦值給指針變量
    BYTE *newbuf=destBuf; 
	
	//對圖像進行掃描
   
	//行 
    for(i=0;i<h;i++)
    {  
		//列
	   for(j=0;j<w;j++)
	   {   

		   //為統計變量賦初始值
	       

         //對于圖像的4個邊框的象素保持原灰度不變
	     if( j<((tem_w-1)/2) || j>(w-(tem_w+1)/2) || i<((tem_h-1)/2) || i>(h-(tem_h+1)/2) )
	      *(newbuf+i*dw+j)=*(oldbuf+i*dw+j);
		 
         //對于其他的象素進行模板操作
		 else 
         { 

          //將點(i,j)點作為模板的中心
          for(m=i-((tem_h-1)/2);m<=i+((tem_h-1)/2);m++)
          {
		     for(n=j-((tem_w-1)/2);n<=j+((tem_w-1)/2);n++)
		    
             //將以點(i,j)為中心,與模板大小相同的范圍內的象素傳遞到模板矩陣中
		     temp[(m-i+((tem_h-1)/2))*tem_w+n-j+((tem_w-1)/2)]=*(oldbuf+m*dw+n);
		  
		  }
          
		 //利用氣泡法計算中值
           for(m=0;m<tem_w*tem_h-1;m++)
           {
		   
		      for(n=0;n<tem_w*tem_h-m-1;n++)
			  {
			    if(temp[n]>temp[n+1]) 
			    mid=temp[n];
                temp[n]=temp[n+1];
			    temp[n+1]=mid;
			  }
		   
		   } 

           //將計算的結果放到新的位圖的相應位置
	      *(newbuf+i*dw+j)=temp[(tem_w*tem_h-1)/2];
		 }
	   }
	} 
   
	//解除鎖定
	::GlobalUnlock((HGLOBAL)hDIB);
    
	//返回新的位圖的句柄
    return(newhDIB);
}



/*************************************************************************
 *
 * 函數名稱:
 *   Equalize()
 *
 * 參數:
 *   HDIB hDIB
 *
 *
 * 說明:
 *   該函數用來對圖像進行直方圖均衡。
 *
 ************************************************************************/
void Equalize(HDIB hDIB)
{
	BYTE* lpDIB=(BYTE*)::GlobalLock ((HGLOBAL)hDIB);
	BYTE* lpDIBBits=(BYTE*)::FindDIBBits((char*)lpDIB);
	LONG lHeight=::DIBHeight ((char*)lpDIB);
	LONG lWidth=::DIBWidth ((char*)lpDIB);
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 臨時變量
	LONG	lTemp;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 灰度映射表
	BYTE	bMap[256];
	
	// 灰度映射表
	LONG	lCount[256];
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 重置計數為0
	for (i = 0; i < 256; i ++)
	{
		// 清零
		lCount[i] = 0;
	}
	
	// 計算各個灰度值的計數
	for (i = 0; i < lHeight; i ++)
	{
		for (j = 0; j < lWidth; j ++)
		{
			lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j;
			
			// 計數加1
			lCount[*(lpSrc)]++;
		}
	}
	
	// 計算灰度映射表
	for (i = 0; i < 256; i++)
	{
		// 初始為0
		lTemp = 0;
		
		for (j = 0; j <= i ; j++)
		{
			lTemp += lCount[j];
		}
		
		// 計算對應的新灰度值
		bMap[i] = (BYTE) (lTemp * 255 / lHeight / lWidth);
	}
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 計算新的灰度值
			*lpSrc = bMap[*lpSrc];
		}
	}
	
	::GlobalUnlock ((HGLOBAL)hDIB);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频在线观看一区| 亚洲v日本v欧美v久久精品| 欧美色欧美亚洲另类二区| 国产米奇在线777精品观看| 亚洲精品国产一区二区精华液| 日韩美女一区二区三区| 91蝌蚪国产九色| 国产一区二区视频在线播放| 亚洲一区二区三区国产| 日本一区二区免费在线| 日韩欧美的一区| 欧美日韩视频专区在线播放| 99久久国产免费看| 国产精品一二一区| 久久99在线观看| 亚洲成人777| 亚洲乱码精品一二三四区日韩在线| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲aaa精品| 一区二区高清在线| 国产精品成人免费精品自在线观看| 欧美成人一区二区| 欧美一区二区网站| 欧美人牲a欧美精品| 色综合久久久久久久久久久| 成人污污视频在线观看| 经典三级视频一区| 麻豆传媒一区二区三区| 视频在线观看一区二区三区| 五月婷婷色综合| 亚洲成av人在线观看| 亚洲精品伦理在线| 亚洲免费看黄网站| 亚洲女与黑人做爰| 亚洲精品乱码久久久久久久久| 国产精品大尺度| 亚洲天堂精品视频| 亚洲欧美成aⅴ人在线观看| 成人欧美一区二区三区黑人麻豆 | 久久成人免费日本黄色| 麻豆精品新av中文字幕| 久久激情综合网| 久久精品国产网站| 久久超碰97人人做人人爱| 另类小说综合欧美亚洲| 韩国精品一区二区| 国产精品中文字幕一区二区三区| 国内一区二区在线| 国产成人精品一区二| 粗大黑人巨茎大战欧美成人| av中文字幕亚洲| 欧美午夜精品理论片a级按摩| 欧美日韩精品欧美日韩精品 | 欧美一区二区播放| 欧美v国产在线一区二区三区| 日韩美女天天操| 国产日韩精品久久久| **网站欧美大片在线观看| 亚洲午夜久久久久久久久电影网 | 国产精品久久精品日日| 伊人开心综合网| 日产国产欧美视频一区精品| 久久成人av少妇免费| 成人福利视频在线看| 91官网在线观看| 日韩三级.com| 国产精品五月天| 亚洲午夜久久久久久久久久久| 热久久免费视频| 国产91精品一区二区麻豆网站| 91啪亚洲精品| 91精品国产91久久综合桃花| 26uuu国产电影一区二区| 国产精品丝袜久久久久久app| 一区二区三区久久| 韩国av一区二区三区在线观看| av中文字幕亚洲| 欧美一区二区三区四区久久| 国产精品蜜臀av| 日韩电影在线观看电影| 高潮精品一区videoshd| 欧美伊人久久久久久久久影院| 精品电影一区二区| 亚洲女人的天堂| 国产一区二区三区最好精华液| 91久久精品一区二区三| 日韩精品一区二区三区swag| 亚洲精品国产无天堂网2021| 韩国视频一区二区| 欧美性xxxxx极品少妇| 久久久久99精品国产片| 亚洲va欧美va人人爽午夜| 国产成人精品一区二区三区四区| 8x8x8国产精品| 亚洲欧洲另类国产综合| 九九视频精品免费| 欧美性视频一区二区三区| 国产色婷婷亚洲99精品小说| 天堂成人免费av电影一区| 岛国一区二区三区| 日韩区在线观看| 亚洲成人综合视频| 99久久精品免费看国产免费软件| 精品成人佐山爱一区二区| 亚洲二区在线观看| 91年精品国产| 国产精品视频麻豆| 久久99精品久久久久久动态图| 欧美性三三影院| 国产精品免费看片| 国产麻豆午夜三级精品| 7777精品伊人久久久大香线蕉超级流畅 | 国产欧美日韩视频在线观看| 偷拍亚洲欧洲综合| 色国产综合视频| 专区另类欧美日韩| 粉嫩av亚洲一区二区图片| 精品国产一区二区精华| 日日夜夜一区二区| 欧美日韩国产电影| 亚洲综合色区另类av| 99国产欧美久久久精品| 国产精品免费丝袜| 成人av电影免费在线播放| 久久久蜜桃精品| 国产毛片精品视频| 精品国产乱码久久久久久牛牛 | 欧美日韩不卡一区| 亚洲午夜影视影院在线观看| 色综合久久66| 一区二区免费在线播放| 色噜噜夜夜夜综合网| 日韩伦理免费电影| 91麻豆视频网站| 亚洲精品大片www| 色婷婷久久久综合中文字幕| 亚洲色图欧美偷拍| 在线亚洲人成电影网站色www| 一区二区三区在线视频播放| 色成年激情久久综合| 亚洲综合免费观看高清完整版 | 亚洲三级小视频| 91老师片黄在线观看| 一区二区三区国产| 在线播放欧美女士性生活| 婷婷中文字幕一区三区| 日韩一区二区三区电影| 免费观看91视频大全| 久久一夜天堂av一区二区三区| 激情综合色综合久久综合| 国产亲近乱来精品视频| 99热在这里有精品免费| 亚洲愉拍自拍另类高清精品| 欧美日韩亚洲高清一区二区| 美女任你摸久久| 久久精品日韩一区二区三区| 99这里都是精品| 亚洲成人综合在线| 日韩丝袜美女视频| 高清国产一区二区| 亚洲男人电影天堂| 欧美精品v日韩精品v韩国精品v| 七七婷婷婷婷精品国产| 精品乱人伦小说| 91免费视频大全| 日韩av不卡一区二区| 国产日韩av一区二区| 欧美主播一区二区三区| 精品一区二区在线看| 综合激情网...| 91精品国产麻豆国产自产在线 | 欧美日本高清视频在线观看| 精品在线一区二区| 亚洲精品一二三四区| 日韩免费一区二区三区在线播放| 高清成人免费视频| 亚洲r级在线视频| 日本一区二区三区四区| 欧美日韩国产a| 丁香五精品蜜臀久久久久99网站| 亚洲一二三区不卡| 国产色婷婷亚洲99精品小说| 欧美日韩国产精选| kk眼镜猥琐国模调教系列一区二区| 午夜精品久久久久久久久| 国产亚洲va综合人人澡精品| 欧美日韩一区二区不卡| 成人免费电影视频| 看片网站欧美日韩| 亚洲综合小说图片| 国产区在线观看成人精品| 欧美日韩国产美| 91亚洲精品乱码久久久久久蜜桃| 奇米精品一区二区三区在线观看 | 欧美一区国产二区| gogo大胆日本视频一区| 久久99在线观看| 午夜亚洲福利老司机| 国产精品久久久久久户外露出 | 自拍偷拍国产精品|