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

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

?? mydiblib.h

?? 《visual c++matlab圖像處理與識別實用案例精選》源碼
?? H
?? 第 1 頁 / 共 4 頁
字號:
		DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x,y-1,lab,lianXuShu);

		//判斷長度
		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
		return TRUE;
		
		//左下點
		
		lpSrc=(char*)lpDIBBits + lLineBytes * (y-1) + x-1;

        //傳遞灰度值
		gray=*lpSrc;

        //如果點在圖像內、顏色為黑色并且沒有被訪問過
		if(y-1 >=0 &&  x-1 >=0 && gray== 0 && lplab[(y-1)*lWidth+x-1] == false)

      	//進行遞歸處理		
		DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x-1,y-1,lab,lianXuShu);

        //判斷長度
		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
		return TRUE;
		
		//左邊
		
		lpSrc=(char*)lpDIBBits + lLineBytes * y + x-1;

		//傳遞灰度值
		gray=*lpSrc;

        //如果點在圖像內、顏色為黑色并且沒有被訪問過
		if(x-1 >=0 &&  gray== 0 && lplab[y*lWidth+x-1] == false)

        //進行遞歸處理		
		DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x-1,y,lab,lianXuShu);

        //判斷長度
		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
			return TRUE;
		
		//左上
		
		lpSrc=(char*)lpDIBBits + lLineBytes * (y+1) + x-1;

		//傳遞灰度值
		gray=*lpSrc;

        //如果點在圖像內、顏色為黑色并且沒有被訪問過
		if(y+1 <lHeight && x-1 >= 0 && gray == 0 && lplab[(y+1)*lWidth+x-1] == false)

		//進行遞歸處理
		
		DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x-1,y+1,lab,lianXuShu);

        //判斷長度
		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
			return TRUE;
		
		//上面
		
		lpSrc=(char*)lpDIBBits + lLineBytes * (y+1) + x;

        //傳遞灰度值
		gray=*lpSrc;

        //如果點在圖像內、顏色為黑色并且沒有被訪問過
		if(y+1 < lHeight && gray == 0 && lplab[(y+1)*lWidth+x] == false)

        //進行遞歸處理
		
		DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x,y+1,lab,lianXuShu);

        //判斷長度
		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
			return TRUE;
		
		//右上
		
		lpSrc=(char*)lpDIBBits + lLineBytes * (y+1) + x+1;
        
		//傳遞灰度值
		gray=*lpSrc;

        //如果點在圖像內、顏色為黑色并且沒有被訪問過
		if(y+1 <lHeight && x+1 <lWidth &&  gray == 0 && lplab[(y+1)*lWidth+x+1] == false)

        //進行遞歸處理
		DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x+1,y+1,lab,lianXuShu);

        //判斷長度
		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
			return TRUE;
		
		//右邊
	
		lpSrc=(char*)lpDIBBits + lLineBytes * y + x+1;

        //傳遞灰度值
		gray=*lpSrc;

		//如果點在圖像內、顏色為黑色并且沒有被訪問過
		if(x+1 <lWidth && gray==0 && lplab[y*lWidth+x+1] == false)

        //進行遞歸處理		
		DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x+1,y,lab,lianXuShu);

        //判斷長度

		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
			return TRUE;
		
		//右下
		
		lpSrc=(char*)lpDIBBits + lLineBytes * (y-1) + x+1;

        //傳遞灰度值
		gray=*lpSrc;

        //如果點在圖像內、顏色為黑色并且沒有被訪問過
		if(y-1 >=0 && x+1 <lWidth && gray == 0 && lplab[(y-1)*lWidth+x+1] == false)

       //進行遞歸處理		
	   DeleteScaterJudge(lpDIBBits,lLineBytes,lplab,lWidth,lHeight,x+1,y-1,lab,lianXuShu);

        //判斷長度
		//如果連續長度滿足要求,說明不是離散點,返回
		if(m_lianXuShu>=lianXuShu)
			return TRUE;
	}
	

	//如果遞歸結束,返回false,說明是離散點
	return FALSE;

}


/*****************繪制數字字符外面的矩形框*******************/
void DrawFrame(CDC* pDC,HDIB hDIB, CRectLink charRect,unsigned int linewidth,COLORREF color)
{	
	CPen pen;
	pen.CreatePen (PS_SOLID,linewidth,color);
	pDC->SelectObject (&pen);
	::SelectObject (*pDC,GetStockObject(NULL_BRUSH));
	CRect rect,rect2;
	BYTE* lpDIB=(BYTE*)::GlobalLock ((HGLOBAL)hDIB);
	while(!charRect.empty())
	{
		
		//從表頭上得到一個矩形
		rect2=rect= charRect.front();
		//從鏈表頭上面刪掉一個
		charRect.pop_front();
		//注意,這里原先的rect是相對于圖像原點(左下角)的,
		//而在屏幕上繪圖時,要轉換以客戶區為原點的坐標
		rect.top =::DIBHeight ((char*)lpDIB)-rect2.bottom;
		rect.bottom =::DIBHeight ((char*)lpDIB)-rect2.top ;
		pDC->Rectangle (&rect);
	}
	::GlobalUnlock ((HGLOBAL)hDIB);
}
/***********************************************
*
* 函數名稱:
*   GradientSharp() 
*
*參數 :
*  HDIB hDIB    -待處理圖像的句柄
*
* 返回值:
*       無
* 
*功能:
*    現圖像的梯度銳化

*說明:
*    只能對2值圖像進行處理,如果圖像本身邊緣較細,可能造成信息的損失
**********************************************************************/
void GradientSharp(HDIB hDIB)
{
	// 指向DIB的指針
	LPSTR lpDIB=(LPSTR) ::GlobalLock((HGLOBAL)hDIB);

	// 指向DIB象素指針
	LPSTR    lpDIBBits;	

	// 找到DIB圖像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);	

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

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

    // 閾值
	BYTE	bThre = 2;

	// 調用GradSharp()函數進行梯度板銳化

	// 指向源圖像的指針
	unsigned char*	lpSrc;
	unsigned char*	lpSrc1;
	unsigned char*	lpSrc2;
	
	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;
	
	// 中間變量
	BYTE	bTemp;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 每行
   for(i = 0; i < lHeight; i++)
	{
		
     // 每列
	 for(j = 0; j < lWidth; j++)
		{
			
             // 指向DIB第i行,第j個象素的指針
			lpSrc  = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 指向DIB第i+1行,第j個象素的指針
			lpSrc1 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 2 - i) + j;
			
		     // 指向DIB第i行,第j+1個象素的指針
		     lpSrc2 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j + 1;
			

              //計算梯度值
		     bTemp = abs((*lpSrc)-(*lpSrc1)) + abs((*lpSrc)-(*lpSrc2));
			
		    // 判斷是否小于閾值
		    if (bTemp < 255)
			{  

		     // 判斷是否大于閾值,對于小于情況,灰度值不變。
			   if (bTemp >= bThre)
			   {

			// 直接賦值為bTemp
			 *lpSrc = bTemp;

			   }

			}
			
           else
			{
				// 直接賦值為255
				*lpSrc = 255;
			}
	 }
   }

//最后還要處理一下圖像中最下面那行
for(j = 0; j < lWidth; j++)
{   
	
 //指向最下邊一行,第j個象素的指針
  lpSrc  = (unsigned char*)lpDIBBits + lLineBytes * 0 + j;

   //將此位置的象素設置為255,即白點
	*lpSrc=255;
}

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


/************************************************************
*
*  函數名稱:
*       RemoveScatterNoise()
*
*  參數:
*     HDIB    hDIB     -原圖像的句柄
*
*  返回值:
*       無
*
*  功能:
*     通過對連續點長度的統計來去除離散雜點
*
*  說明:
*      只能對2值圖像進行處理
****************************************************************/
void RemoveScatterNoise(HDIB hDIB)
{
	
	// 指向DIB的指針
	LPSTR lpDIB=(LPSTR) ::GlobalLock((HGLOBAL)hDIB);
	
	// 指向DIB象素指針
	LPSTR    lpDIBBits;	

	// 找到DIB圖像象素數據區的起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);
	
	//獲得圖像的長度
	LONG lWidth=::DIBWidth ((char*)lpDIB);

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

	//設置判定噪聲的長度閾值為15
	//即如果與考察點相連接的黑點的數目小于15則認為考察點是噪聲點
	int length=15;
	
	// 循環變量
	m_lianXuShu=0;
	LONG	i;
	LONG	j;	
	LONG    k;

	// 圖像每行的字節數
	LONG	lLineBytes;

	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);

    
	LPSTR lpSrc;

	//開辟一塊用來存放標志的內存數組
	LPBYTE lplab = new BYTE[lHeight * lWidth];

	//開辟一塊用來保存離散判定結果的內存數組
	bool *lpTemp = new bool[lHeight * lWidth];

    //初始化標志數組
	for (i=0;i<lHeight*lWidth;i++)
    {

    //將所有的標志位設置為非
	lplab[i] = false;

	}

	//用來存放離散點的坐標的數組
	CPoint lab[21];
   
	//為循環變量賦初始值
	k=0;

	//掃描整個圖像

	//逐行掃描
	for(i =0;i<lHeight;i++)
	{  
       
	   //逐行掃描
		for(j=0;j<lWidth;j++)
			{	
				//先把標志位置false
				for(k=0;k<m_lianXuShu;k++)
				lplab[lab[k].y * lWidth + lab[k].x] = false;

				//連續數置0
				m_lianXuShu =0;

			    //進行離散性判斷
			    lpTemp[i*lWidth+j] = DeleteScaterJudge(lpDIBBits,(WORD)lLineBytes,lplab,lWidth,lHeight,j,i,lab,length);

			}
	}
			
	//掃描整個圖像,把離散點填充成白色

	//逐行掃描
	for(i = 0;i<lHeight;i++)
	{

      //逐列掃描
		for(j=0;j<lWidth;j++)
		{       
			    //查看標志位,如果為非則將此點設為白點
				if(lpTemp[i*lWidth+j] == false)
				{	
                   //指向第i行第j個象素的指針
					lpSrc=(char*)lpDIBBits + lLineBytes * i + j;

					//將此象素設為白點
					*lpSrc=BYTE(255);
				}
			}
	}

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

}

/*********************************************************

* 函數名稱:
*         SlopeAdjust()
*
* 參數:
*     HDIB   hDIB       -原圖像的句柄
*
* 返回值:
*         無
*
* 功能:
*     通過對圖像左右半邊平均高度的統計來進行傾斜的調整
*
* 說明:
*      只能對2值圖像進行處理
*
****************************************************************/
void SlopeAdjust(HDIB hDIB)
{
	// 指向DIB的指針
	LPSTR lpDIB=(LPSTR) ::GlobalLock((HGLOBAL)hDIB);
	
	// 指向DIB象素指針
	LPSTR    lpDIBBits;	

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

	// 循環變量
	LONG	i;
	LONG	j;
	
	// 圖像每行的字節數
	LONG	lLineBytes;

	//圖像的長度
	LONG    lWidth;

	//圖像的寬度
	LONG	lHeight;

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

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

	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
    
	//圖像左半邊的平均高度
	double leftaver=0.0;

   //圖像右半邊的平均高度
	double rightaver=0.0;

	//圖像的傾斜度
	double slope;

	//統計循環變量
	LONG counts=0;
	
	//掃描左半邊的圖像,求黑色象素的平均高度

	//行
	for (i=0;i<lHeight;i++)
	{   

      //列
		for (j=0;j<lWidth/2;j++)
		{
		 
		 //指向第i行第j個象素的指針	
		 lpSrc=(unsigned char*)lpDIBBits + lLineBytes *  i + j;
      
		 //如果為黑點
		 if (*lpSrc == 0)
		 {
          
          //對其高度進行統計疊加
		  counts +=lWidth/2 -j;
		  leftaver += i*(lWidth/2 -j);

		 }

		}
	}

    //計算平均高度
	leftaver /= counts;
	
	//將統計循環變量重新賦值
	counts =0;

	//掃描右半邊的圖像,求黑色象素的平均高度

	//行
	for (i =0;i<lHeight;i++)
	{

       //列
		for (j=lWidth/2;j<lWidth;j++)
		{
			//指向第i行第j個象素的指針
			lpSrc=(unsigned char*)lpDIBBits + lLineBytes *  i + j;

            //如果為黑點
			if (*lpSrc == 0)
				{

				  //進行統計疊加
					counts +=lWidth -j;
					rightaver += i*(lWidth -j);
				}
			}
	}

	//計算右半邊的平均高度
	rightaver /= counts;
	
	//計算斜率
	slope = (leftaver - rightaver) / (lWidth/2);

	//指向新的圖像象素起始位置的指針
	LPSTR lpNewDIBBits;
   
	//指向新圖像的指針
	LPSTR lpDst;
    
	//新圖像的句柄
	HLOCAL nNewDIBBits=LocalAlloc(LHND,lLineBytes*lHeight);
    
	//鎖定內存
	lpNewDIBBits=(char*)LocalLock(nNewDIBBits);
    
	//指向新圖像象素的指針
	lpDst=(char*)lpNewDIBBits;
    
	//為新圖像賦初始值
	memset(lpDst,(BYTE)255,lLineBytes*lHeight);
    
	//象素點的灰度值
	int gray;
    
	//位置映射值
	int i_src;

	//根據斜率,把當前新圖像的點映射到源圖像的點

	//行
	for (i=0;i<lHeight;i++)
	{
		//列
   		for (j=0;j<lWidth;j++)
		{	
		   //計算映射位置	
			i_src=int(i - (j-lWidth/2)*slope);

			//如果點在圖像外,象素置白色
			if (i_src <0 || i_src >=lHeight )
				gray = 255;

			else
			{	
				//否則到源圖像中找點,取得象素值

				//指向第i_src行第j個象素的指針
				lpSrc=(unsigned char *)lpDIBBits + lLineBytes *  i_src + j;
				gray = *lpSrc;
			}
			
			//把新圖像的點用得到的象素值填充
            //指向第i行第j個象素的指針
			lpDst = (char *)lpNewDIBBits + lLineBytes * i + j;
			*lpDst=gray;
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区乱码在线 | 91麻豆精东视频| 久久人人超碰精品| 韩国av一区二区三区四区| 欧美tickle裸体挠脚心vk| 国产一区 二区 三区一级| 国产亲近乱来精品视频| 成人免费va视频| 亚洲精品国产成人久久av盗摄| 91蜜桃传媒精品久久久一区二区| 亚洲精品欧美二区三区中文字幕| 色综合婷婷久久| 亚洲久草在线视频| 欧美福利视频一区| 久久 天天综合| 中文一区二区完整视频在线观看 | 色婷婷综合在线| 午夜视频在线观看一区二区| 欧美xxxx在线观看| 国产999精品久久| 亚洲精品第1页| 8x福利精品第一导航| 国产又黄又大久久| 亚洲美女精品一区| 日韩一区二区免费在线观看| 懂色中文一区二区在线播放| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲曰韩产成在线| 欧美大片在线观看一区二区| 成+人+亚洲+综合天堂| 亚洲一区在线观看视频| 精品国产一区二区三区不卡| av在线不卡免费看| 日本在线不卡视频| 亚洲视频中文字幕| 欧美成人a∨高清免费观看| 成人网在线播放| 日韩二区三区在线观看| 国产精品第四页| 欧美放荡的少妇| 国产一区二区三区电影在线观看 | 不卡一区在线观看| 日本欧美大码aⅴ在线播放| 国产欧美视频一区二区三区| 欧美日韩一区二区三区免费看| 国产美女av一区二区三区| 亚洲另类色综合网站| 国产午夜精品一区二区| 欧美精品一二三四| 不卡一区二区三区四区| 免费看欧美美女黄的网站| 樱桃视频在线观看一区| 久久久91精品国产一区二区精品| 精品污污网站免费看| av不卡在线播放| 国产一区高清在线| 石原莉奈一区二区三区在线观看| 日韩伦理av电影| 久久久久久久久久久久久久久99| 欧美一卡2卡3卡4卡| 欧美日韩国产成人在线免费| www.日韩大片| 国产大片一区二区| 久久精品二区亚洲w码| 日日噜噜夜夜狠狠视频欧美人| 日韩伦理电影网| 国产精品精品国产色婷婷| 精品国产乱码久久久久久久久 | 欧美日韩一区国产| 99国产精品99久久久久久| 国产精品一区二区久久精品爱涩| 美女一区二区久久| 日韩—二三区免费观看av| 午夜在线电影亚洲一区| 亚洲一区二区精品视频| 亚洲伦在线观看| 亚洲蜜桃精久久久久久久| 亚洲男同性恋视频| 亚洲图片激情小说| 亚洲欧洲制服丝袜| 亚洲少妇最新在线视频| 亚洲人快播电影网| 亚洲精选视频在线| 亚洲综合色自拍一区| 亚洲成人一区在线| 爽好多水快深点欧美视频| 天天影视涩香欲综合网 | 日韩一区在线播放| 亚洲人成人一区二区在线观看| 国产精品久久久久久久裸模| 亚洲国产精品黑人久久久| 国产日产欧美一区二区视频| 国产日韩欧美精品一区| 国产精品伦理在线| 国产精品国产成人国产三级| 亚洲欧洲av在线| 亚洲美女淫视频| 五月激情综合网| 免费观看在线色综合| 国产在线观看一区二区| 不卡的看片网站| 日本道在线观看一区二区| 欧美午夜电影网| 91麻豆精品国产91| 精品va天堂亚洲国产| 国产视频一区二区在线| 亚洲特黄一级片| 五月天丁香久久| 国产精品白丝jk白祙喷水网站| 成人v精品蜜桃久久一区| 色婷婷国产精品| 欧美一区二区播放| 国产精品久久毛片av大全日韩| 亚洲欧美日韩在线播放| 视频在线观看一区二区三区| 国产一区二区成人久久免费影院| 99re在线精品| 欧美区视频在线观看| 久久久亚洲午夜电影| 亚洲精品免费播放| 久久精品国产网站| 91亚洲男人天堂| 欧美大片日本大片免费观看| 中文字幕一区日韩精品欧美| 爽爽淫人综合网网站 | 972aa.com艺术欧美| 91精品一区二区三区久久久久久| 国产亚洲女人久久久久毛片| 亚洲福利视频一区二区| 国产一区二区三区四区五区美女| 色偷偷88欧美精品久久久| 久久日韩粉嫩一区二区三区| 亚洲欧美日韩小说| 黑人巨大精品欧美黑白配亚洲| 色94色欧美sute亚洲线路一久 | 青青草成人在线观看| 99精品久久免费看蜜臀剧情介绍| 欧美一区二区免费观在线| 中文字幕在线视频一区| 另类小说综合欧美亚洲| 欧美优质美女网站| 日本一区二区免费在线| 青青青伊人色综合久久| 一本久道久久综合中文字幕| 久久精品一区二区三区不卡牛牛| 亚洲成人av资源| 99视频精品免费视频| 久久综合一区二区| 日韩电影在线看| 在线观看免费成人| 综合亚洲深深色噜噜狠狠网站| 激情综合色综合久久| 91精品国产91久久综合桃花| 亚洲狼人国产精品| 91亚洲精品久久久蜜桃网站 | 91福利视频久久久久| 中文字幕不卡的av| 国产精品18久久久久久久久久久久 | 91福利精品视频| 亚洲欧洲美洲综合色网| 岛国一区二区三区| 久久影院午夜论| 久久91精品久久久久久秒播| 日韩欧美激情一区| 日本不卡一二三区黄网| 欧美色网站导航| 一区二区三区蜜桃网| 91色.com| 亚洲免费观看高清在线观看| 不卡欧美aaaaa| 一区在线观看视频| 97精品久久久午夜一区二区三区| 国产亚洲欧美一级| 国产盗摄女厕一区二区三区| 久久久久久免费网| 国产**成人网毛片九色| 欧美高清一级片在线观看| 成人国产精品免费观看动漫| 国产精品人成在线观看免费| 成人美女在线观看| 1024国产精品| 色999日韩国产欧美一区二区| 亚洲欧美日韩国产成人精品影院| 色噜噜久久综合| 亚洲国产日韩一级| 4438亚洲最大| 激情欧美一区二区三区在线观看| 精品福利一二区| 国产成人在线网站| 亚洲人成网站精品片在线观看| 欧美在线视频不卡| 偷拍亚洲欧洲综合| 亚洲精品一区二区三区福利| 国产成人av电影在线| 亚洲女人的天堂| 在线播放/欧美激情| 国产麻豆9l精品三级站| 中文字幕在线一区二区三区| 欧美日韩精品一区二区| 国产一区二区视频在线播放|