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

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

?? jisuanprocessdib.cpp

?? VC++圖像處理程序設計課本和代碼.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// JisuanProcessDib.cpp: implementation of the JisuanProcessDib class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DSplit.h"
#include "JisuanProcessDib.h"
#include "SquareDlg.h"
#include "LINEDLG.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

JisuanProcessDib::JisuanProcessDib()
{
	x_sign=0;
	m_temp=0;
	x_temp=0;
	y_temp=0;
    p_temp=0;
	stop=0;
}

JisuanProcessDib::~JisuanProcessDib()
{
	
}

/***************************************************************/
/*函數名稱:erzhihua(int yuzhi_gray)                           */
/*函數類型:void                                               */
/*參數:int yuzhi_gray,用戶給定的閾值                         */
/*功能:對圖像使用固定閾值法進行二值化。                       */
/***************************************************************/
void JisuanProcessDib::erzhihua(int yuzhi_gray)
{
	p_data=this->GetData ();   //取得原圖的數據區指針
    wide=this->GetWidth ();  //取得原圖的數據區寬度
    height=this->GetHeight ();   //取得原圖的數據區高度
    if(m_pBitmapInfoHeader->biBitCount<9)	//灰度圖像
	{
		for(int j=0;j<height;j++)	// 每行
			for(int i=0;i<wide;i++)	// 每列
			{
				int temp=0;
				temp= *(p_data+(height-j-1)*wide+i);
				if(temp<yuzhi_gray)
					*(p_data+(height-j-1)*wide+i)=0;
				else
					*(p_data+(height-j-1)*wide+i)=255;
			}
	}
	else	//24位彩色
	{
		for(int j=0;j<height;j++)	// 每行
			for(int i=0;i<wide;i++)	// 每列
			{
				int temp=0;
				temp= *(p_data+(height-j-1)*wide*3+i*3);
				if(temp<yuzhi_gray)
				{
					*(p_data+(height-j-1)*wide*3+i*3)=0;
					*(p_data+(height-j-1)*wide*3+i*3+1)=0;
					*(p_data+(height-j-1)*wide*3+i*3+2)=0;
				}
				else
				{
					*(p_data+(height-j-1)*wide*3+i*3)=255;
					*(p_data+(height-j-1)*wide*3+i*3+1)=255;
					*(p_data+(height-j-1)*wide*3+i*3+2)=255;
				}
			}
	}
}

/***************************************************************/
/*函數名稱:xiaochugulidianHEI()                               */
/*函數類型:void                                               */
/*功能:消除孤立黑點。                                         */
/***************************************************************/
void JisuanProcessDib::xiaochugulidianHEI()
{
	p_data=this->GetData ();   //取得原圖的數據區指針
    wide=this->GetWidth ();  //取得原圖的數據區寬度
    height=this->GetHeight ();   //取得原圖的數據區高度
	if(m_pBitmapInfoHeader->biBitCount<9)	//灰度圖像
	{
		for(int j=1;j<height-1;j++)	// 每行
			for(int i=1;i<wide-1;i++)	// 每列
			{
				int temp=0;	
				if(*(p_data+(height-j-1)*wide+i)==0)//本身為黑點
				{
					for(int m=0;m<3;m++)
						for(int n=0;n<3;n++)
						{
							temp+=*(p_data+(height-j-m)*wide+i+n-1);
						}
					if(temp>=255*6)///周圍8個中點有大于等于6個白點
						*(p_data+(height-j-1)*wide+i)=255;
				}
			}
	}
	else	//24位彩色
	{
		for(int j=1;j<height-1;j++)	// 每行
			for(int i=1;i<wide-1;i++)	// 每列
			{
				int temp=0;	
				if(*(p_data+(height-j-1)*wide*3+i*3)==0)//本身為黑點
				{
					for(int m=0;m<3;m++)
						for(int n=0;n<3;n++)
						{
							temp+=*(p_data+(height-j-m)*wide*3+(i+n-1)*3);
						}
					if(temp>=255*6)///周圍8個中點有大于等于6個白點
					{
						*(p_data+(height-j-1)*wide*3+i*3)=255;
						*(p_data+(height-j-1)*wide*3+i*3+1)=255;
						*(p_data+(height-j-1)*wide*3+i*3+2)=255;
					}
				}
			}
	}
}

/***************************************************************/
/*函數名稱:xiaochugulidianBAI()                               */
/*函數類型:void                                               */
/*功能:消除孤立白點。                                         */
/***************************************************************/
void JisuanProcessDib::xiaochugulidianBAI()
{
	p_data=this->GetData ();   //取得原圖的數據區指針
    wide=this->GetWidth ();  //取得原圖的數據區寬度
    height=this->GetHeight ();   //取得原圖的數據區高度
	if(m_pBitmapInfoHeader->biBitCount<9)	//灰度圖像
	{
		for(int j=1;j<height-1;j++)	// 每行
			for(int i=1;i<wide-1;i++)	// 每列
			{
				int temp=0;			;
				if(*(p_data+(height-j-1)*wide+i)==255)//本身為白點
				{
					for(int m=0;m<3;m++)
						for(int n=0;n<3;n++)
						{
							temp+=*(p_data+(height-j-m)*wide+i+n-1);
						}
					if(temp<=255*3)///周圍8個點中有小于等于2個白點
						*(p_data+(height-j-1)*wide+i)=0;
				}
			}
	}
	else	//24位彩色
	{
		for(int j=1;j<height-1;j++)	// 每行
			for(int i=1;i<wide-1;i++)	// 每列
			{
				int temp=0;			;
				if(*(p_data+(height-j-1)*wide*3+i*3)==255)//本身為白點
				{
					for(int m=0;m<3;m++)
						for(int n=0;n<3;n++)
						{
							temp+=*(p_data+(height-j-m)*wide*3+(i+n-1)*3);
						}
					if(temp<=255*3)///周圍8個點中有小于等于2個白點
					{
						*(p_data+(height-j-1)*wide*3+i*3)=0;
						*(p_data+(height-j-1)*wide*3+i*3+1)=0;
						*(p_data+(height-j-1)*wide*3+i*3+2)=0;
					}
				}
			}
	}
}

/***************************************************************/
/*函數名稱:biaoji()                                           */
/*函數類型:void                                               */
/*功能:對圖像進行標記,劃分成不同的連通區域。                  */
/***************************************************************/
void JisuanProcessDib::biaoji()
{
	x_sign=0; 
	m_temp=0;
	x_temp=0;
	y_temp=0;
	stop=0;
	memset(flag,0,255);
	p_data=this->GetData ();   //取得原圖的數據區指針
    wide=this->GetWidth ();  //取得原圖的數據區寬度
    height=this->GetHeight ();   //取得原圖的數據區高度
    if(m_pBitmapInfoHeader->biBitCount<9)	//灰度圖像
	{
		p_temp=new BYTE[wide*height];//開辟一個臨時內存區
		memset(p_temp,255,wide*height);
		//從左到右標號
		for(int j=1;j<height-1;j++)	// 每行
		{
			if(stop==1)//判斷連通區是否太多
				break;
			for(int i=1;i<wide-1;i++)	// 每列
			{
				if(x_sign>250)
				{
					AfxMessageBox("連通區數目太多,請增大閾值");
					stop=1;
					break;
				}
				if(*(p_data+(height-j-1)*wide+i)==0)//若當前點為黑點
				{
					if(*(p_data+(height-j-1+1)*wide+i+1)==0)//右上
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1+1)*wide+i+1);
						x_temp=*(p_temp+(height-j-1+1)*wide+i+1);
						flag[x_temp]+=1;
						if(*(p_data+(height-j-1)*wide+i-1)==0&&*(p_temp+(height-j-1)*wide+i-1)!=x_temp)//左前
						{
							y_temp=*(p_temp+(height-j-1)*wide+i-1);
							for(int m=1;m<=height-1;m++)
								for(int n=1;n<=wide-1;n++)
								{
									if(*(p_temp+(height-m-1)*wide+n)==y_temp)
									{	
										flag[y_temp]=0;
										*(p_temp+(height-m-1)*wide+n)=x_temp;
										flag[x_temp]+=1;
									}
								}
						}//end//左前
						if(*(p_data+(height-j-1+1)*wide+i-1)==0&&*(p_temp+(height-j-1+1)*wide+i-1)!=x_temp)//左上
						{
							y_temp=*(p_temp+(height-j-1+1)*wide+i-1);
							for(int m=1;m<=height-1;m++)
								for(int n=1;n<=wide-1;n++)
								{
									if(*(p_temp+(height-m-1)*wide+n)==y_temp)
									{	
										flag[y_temp]=0;
										*(p_temp+(height-m-1)*wide+n)=x_temp;
										flag[x_temp]+=1;
									}
								}
						}//end//左上
					}
					else if(*(p_data+(height-j-1+1)*wide+i)==0)//正上
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1+1)*wide+i);
						x_temp=*(p_temp+(height-j-1+1)*wide+i);
						flag[x_temp]+=1;
					}
					else if(*(p_data+(height-j-1+1)*wide+i-1)==0)//左上
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1+1)*wide+i-1);
						x_temp=*(p_temp+(height-j-1+1)*wide+i-1);
						flag[x_temp]+=1;
					}
					else if(*(p_data+(height-j-1)*wide+i-1)==0)//左前
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1)*wide+i-1);
						x_temp=*(p_temp+(height-j-1)*wide+i-1);
						flag[x_temp]+=1;
					}
					else//沒有
					{				
						++x_sign;
						m_temp=x_sign;
						*(p_temp+(height-j-1)*wide+i)=m_temp;
						flag[m_temp]=1;
						
					}
				}//end if
			}// 每列
		}//end 每行
	}
	else	//24位彩色
	{
		p_temp=new BYTE[wide*height];//開辟一個臨時內存區
		memset(p_temp,255,wide*height);
		//從左到右標號
		for(int j=1;j<height-1;j++)	// 每行
		{
			if(stop==1)//判斷連通區是否太多
				break;
			for(int i=1;i<wide-1;i++)	// 每列
			{
				if(x_sign>250)
				{
					AfxMessageBox("連通區數目太多,請增大閾值");
					stop=1;
					break;
				}
				if(*(p_data+(height-j-1)*wide*3+i*3)==0)//若當前點為黑點
				{
					
					if(*(p_data+(height-j-1+1)*wide*3+(i+1)*3)==0)//右上
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1+1)*wide+(i+1));
						x_temp=*(p_temp+(height-j-1+1)*wide+(i+1));
						flag[x_temp]+=1;
						if(*(p_data+(height-j-1)*wide*3+(i-1)*3)==0&&*(p_temp+(height-j-1)*wide+(i-1))!=x_temp)//左前
						{
							y_temp=*(p_temp+(height-j-1)*wide+(i-1));
							for(int m=1;m<=height-1;m++)
								for(int n=1;n<=wide-1;n++)
								{
									if(*(p_temp+(height-m-1)*wide+n)==y_temp)
									{	
										flag[y_temp]=0;
										*(p_temp+(height-m-1)*wide+n)=x_temp;
										
										flag[x_temp]+=1;
									}
								}
						}//end//左前
						if(*(p_data+(height-j-1+1)*wide*3+(i-1)*3)==0&&*(p_temp+(height-j-1+1)*wide+(i-1))!=x_temp)//左上
						{
							y_temp=*(p_temp+(height-j-1+1)*wide+(i-1));
							for(int m=1;m<=height-1;m++)
								for(int n=1;n<=wide-1;n++)
								{
									if(*(p_temp+(height-m-1)*wide+n)==y_temp)
									{	
										flag[y_temp]=0;
										*(p_temp+(height-m-1)*wide+n)=x_temp;
										
										flag[x_temp]+=1;
									}
								}
						}//end//左上
					}
					else if(*(p_data+(height-j-1+1)*wide*3+i*3)==0)//正上
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1+1)*wide+i);
						x_temp=*(p_temp+(height-j-1+1)*wide+i);
						flag[x_temp]+=1;
					}
					else if(*(p_data+(height-j-1+1)*wide*3+(i-1)*3)==0)//左上
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1+1)*wide+(i-1));
						x_temp=*(p_temp+(height-j-1+1)*wide+(i-1));
						flag[x_temp]+=1;
					}
					else if(*(p_data+(height-j-1)*wide*3+(i-1)*3)==0)//左前
					{
						*(p_temp+(height-j-1)*wide+i)=*(p_temp+(height-j-1)*wide+i-1);
						x_temp=*(p_temp+(height-j-1)*wide+(i-1));
						flag[x_temp]+=1;
					}
					else//沒有
					{				
						++x_sign;
						m_temp=x_sign;
						*(p_temp+(height-j-1)*wide+i)=m_temp;
						
						flag[m_temp]=1;
					}
				}//end if
			}// 每列
		}//end 每行
	}
}

/***************************************************************/
/*函數名稱:LianTong()                                         */
/*函數類型:void                                               */
/*功能:對連通區調整,輸出每個連通區的面積。                    */
/***************************************************************/
void JisuanProcessDib::LianTong()
{
	biaoji();  //調用標記函數
	if(stop!=1)//判斷連通區是否太多
	{
		int fg[255]={0};//定義一個數組
		memset(fg,0,255);//初始化賦值都為0
		int y_sign=0;
		int m_Area=0;//定義一個面積
		for(int i=1;i<=x_sign;i++)
		{
			if(flag[i]!=0)
			{
				if(fg[y_sign]==0)
				{
					fg[y_sign]=flag[i];
					++y_sign;
				}			
			}
			m_Area+=flag[i];
		}
		SquareDlg  dlg;//輸出對話框
		dlg.m_number=y_sign;//輸出連通區域個數
		dlg.m_squareALL=m_Area;//輸出連通區域的總積
		CString ss[20];
		//在對話框里輸出每個連通區的面積(區域像素個數)
		for(i=0;i<y_sign;i++)
		{
			ss[i].Format("連通區:%3d  該區面積:%10.0d",i+1,fg[i]);
			dlg.m_ShuChu+=ss[i];
		}
		dlg.DoModal();
		for(i=0;i<255;i++) //初試設置pp_area都為0
		{
			pppp[i].pp_area=0;
		}
		for(int t=1;t<=x_sign;t++)
		{	pppp[t].pp_number=t;
		for(int j=1;j<height-1;j++)
			for(int i=1;i<wide-1;i++)
			{
				if(*(p_temp+(height-j-1)*wide+i)==t)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片一区二区三区| 亚洲午夜久久久久| 国产成人av资源| 久久久91精品国产一区二区精品| 久久se精品一区二区| 久久综合久久综合九色| 成人精品视频一区| 一区二区视频在线看| 欧美午夜宅男影院| 日韩专区欧美专区| 精品国产91九色蝌蚪| 成人综合在线网站| 亚洲国产视频网站| 精品国产91洋老外米糕| 成人av在线一区二区三区| 一区二区三区鲁丝不卡| 欧美精品自拍偷拍动漫精品| 久久精品国产免费看久久精品| 久久久国产综合精品女国产盗摄| www.欧美日韩国产在线| 亚洲超碰精品一区二区| 久久免费视频色| 91免费看视频| 麻豆久久久久久| 中文字幕在线观看不卡视频| 欧美精品在欧美一区二区少妇| 国模套图日韩精品一区二区| 亚洲精选视频在线| 精品国产百合女同互慰| 欧美综合一区二区| 精品一区二区在线播放| 亚洲欧美另类图片小说| 日韩免费成人网| 色偷偷久久一区二区三区| 久久国产夜色精品鲁鲁99| 亚洲欧美在线视频观看| 欧美成人aa大片| 91美女福利视频| 国产精品综合一区二区三区| 亚洲成人精品一区| 中文字幕中文字幕在线一区| 欧美大片一区二区三区| 欧美日韩一区二区三区视频| av在线播放成人| 国产一区高清在线| 五月婷婷另类国产| 亚洲天堂免费看| 久久久久久久综合色一本| 欧美精品777| 91久久精品网| 99视频精品免费视频| 狠狠色丁香久久婷婷综| 日本亚洲三级在线| 五月天中文字幕一区二区| 亚洲激情自拍偷拍| 国产精品免费看片| 国产亚洲成av人在线观看导航| 欧美一级国产精品| 欧美三级日本三级少妇99| 91网站最新地址| 91在线一区二区| 波多野结衣中文字幕一区 | 精品一区二区三区免费视频| 亚洲一区二区综合| 亚洲欧美另类图片小说| 国产精品电影一区二区| 国产精品卡一卡二卡三| 久久九九全国免费| 国产亚洲视频系列| 国产日韩欧美精品一区| 久久久精品欧美丰满| 国产天堂亚洲国产碰碰| 久久久国产精品麻豆| 国产日韩欧美高清在线| 欧美国产精品专区| 国产精品国产三级国产aⅴ入口 | 91免费在线视频观看| av成人老司机| 91麻豆免费看| 91豆麻精品91久久久久久| 欧美日韩一区二区三区在线 | 国产在线麻豆精品观看| 久久99精品久久久久久| 韩国av一区二区三区四区| 国产精品一区一区| 成人av免费在线观看| 一本久久a久久精品亚洲| 欧美日韩在线直播| 日韩欧美你懂的| 中文字幕成人av| 亚洲一区中文日韩| 午夜视黄欧洲亚洲| 精品在线播放午夜| 成人黄色大片在线观看| 日本乱人伦aⅴ精品| 欧美日韩成人综合| 精品久久久久久久久久久久久久久| 精品91自产拍在线观看一区| 国产日韩高清在线| 一区二区三区免费看视频| 亚洲国产成人av| 国产在线播放一区三区四| av综合在线播放| 91福利资源站| 亚洲精品一线二线三线无人区| 国产欧美日韩卡一| 亚洲一区二区三区视频在线| 秋霞电影一区二区| 成人av在线一区二区| 欧美日韩视频专区在线播放| 久久综合给合久久狠狠狠97色69| 国产精品久线在线观看| 一区二区成人在线视频| 久久er99精品| 色婷婷久久综合| 久久众筹精品私拍模特| 洋洋成人永久网站入口| 国产在线视频精品一区| 欧美色精品在线视频| 国产亚洲精品资源在线26u| 一区二区三区.www| 国产美女视频91| 欧美挠脚心视频网站| 国产精品乱码人人做人人爱 | 一片黄亚洲嫩模| 国产精品自拍毛片| 69堂精品视频| 亚洲欧洲性图库| 国产成人免费在线| 欧美人狂配大交3d怪物一区| 国产精品网站在线播放| 蜜桃一区二区三区在线观看| 91亚洲精品乱码久久久久久蜜桃 | 成人综合在线网站| 日韩欧美一二三四区| 一区二区三区在线影院| 成人动漫av在线| 亚洲精品一区二区三区香蕉| 性做久久久久久| 91麻豆精品在线观看| 欧美国产精品v| 国产大陆亚洲精品国产| 日韩欧美一区二区久久婷婷| 亚洲午夜激情网页| 91猫先生在线| 成人欧美一区二区三区黑人麻豆 | 黑人精品欧美一区二区蜜桃| 欧美日韩一级黄| 亚洲小说春色综合另类电影| 97精品国产97久久久久久久久久久久 | 偷窥国产亚洲免费视频| 色婷婷综合视频在线观看| 欧美国产日韩亚洲一区| 国产成人在线看| 精品粉嫩aⅴ一区二区三区四区| 性欧美大战久久久久久久久| 精品视频1区2区3区| 亚洲制服欧美中文字幕中文字幕| 99re视频这里只有精品| 综合电影一区二区三区| 91丨porny丨首页| 亚洲品质自拍视频网站| 91在线观看地址| 亚洲黄色小视频| 欧美影视一区在线| 亚洲成年人网站在线观看| 欧美日韩一二三| 男人的天堂久久精品| 国产成人综合在线| 91在线高清观看| 亚洲午夜久久久久中文字幕久| 欧美日韩三级一区二区| 日韩精品国产精品| 日韩亚洲欧美成人一区| 视频一区视频二区中文| 欧美一二三在线| 国内久久精品视频| 国产欧美日韩中文久久| av资源站一区| 亚洲一级二级在线| 日韩一级视频免费观看在线| 国内一区二区在线| 中文字幕欧美国产| 色欲综合视频天天天| 亚洲国产成人porn| 亚洲精品一区二区三区影院| 成人在线视频一区二区| 亚洲精品精品亚洲| 欧美一区二区日韩| 国产精一品亚洲二区在线视频| 亚洲天堂免费看| 色八戒一区二区三区| 免费成人在线视频观看| 久久久99精品免费观看| 91久久精品网| 国产综合久久久久影院| 亚洲精品日日夜夜| 精品国产髙清在线看国产毛片| 99亚偷拍自图区亚洲| 蜜桃视频一区二区三区在线观看|