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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? iprocesse.cpp

?? 這是VC++ 2003.net圖像處理的光盤源程序!!!非常好的
?? CPP
字號:
//   IProcessE.cpp

#include "stdafx.h"
     
#ifndef		_INC_IPROCESSEC
#define		_INC_IPROCESSEC

int		nSobelFlag=0;

void Morphologic(CImage *pImg0,CImage *pImg1,int n)
{
 	struct	IMAGEPARAMENT P;
 	BYTE	**list1,**list0;
	int		k;
	CImage  gImg1,gImg0;
   
	k=ImageType(pImg1);
 	if (k==2)
		Threshold(pImg1,1,0);
	else if (k!=0) return;
 
 	ExpandImage(&gImg1,pImg1);
	ImageCopy(&gImg0,&gImg1);
 	list1=(BYTE**) Create2DList(&gImg1);
	list0=(BYTE**) Create2DList(&gImg0);
 
 	GetImageParament(&gImg1,&P); 
 	switch(n) {
		case 1:
			Erosion(list0,list1,P.nWidth,P.nHeight);
			break;
		case 2:
			Dilation(list0,list1,P.nWidth,P.nHeight);
			break;
		case 3:
			Inneredge(list0,list1,P.nWidth,P.nHeight);
			break;
		case 4:
			Outteredge(list0,list1,P.nWidth,P.nHeight);
			break;
		case 5:
			Morphologyedge(list0,list1,P.nWidth,P.nHeight);
			break;
		case 6:
			Skeleton(list0,list1,P.nWidth,P.nHeight);
			break;
		case 7:
			Erosion(list0,list1,P.nWidth,P.nHeight);
			Dilation(list1,list0,P.nBytesPerLine,P.nHeight);
 			break;
		case 8:
			Dilation(list0,list1,P.nWidth,P.nHeight);
			Erosion(list1,list0,P.nBytesPerLine,P.nHeight);
 			break;
		case 9:
			MorphologyThin(list0,list1,P.nWidth,P.nHeight);
   			break;		
		case 10:
  		    PatternThin(list1,P.nWidth,P.nHeight);
  			break;		
	}
	Release2DList(list1);
	Release2DList(list0);

    if (n<7)
		ReduceImage(pImg1,&gImg0);
	else
		ReduceImage(pImg1,&gImg1);
 
	gImg1.Destroy();
	gImg0.Destroy();
}

void GMorphologic(CImage *pImg0,CImage *pImg1,int n)
{
 	struct	IMAGEPARAMENT P;
 	BYTE	**list1,**list0;
	CImage  gImg1,gImg0;
	RGBQUAD	ColorTab[256];
  
 	ExpandImage(&gImg1,pImg1);
	ImageCopy(&gImg0,&gImg1);
 	list1=(BYTE**) Create2DList(&gImg1);
	list0=(BYTE**) Create2DList(&gImg0);
 
 	GetImageParament(&gImg1,&P); 
	switch(n) {
		case 1:
			GErosion(list0,list1,P.nWidth,P.nHeight);
			break;
		case 2:
			GDilation(list0,list1,P.nWidth,P.nHeight);
			break;
		case 3:
			GErosion(list0,list1,P.nWidth,P.nHeight);
			GDilation(list1,list0,P.nBytesPerLine,P.nHeight);
 			break;
		case 4:
			GDilation(list0,list1,P.nWidth,P.nHeight);
			GErosion(list1,list0,P.nBytesPerLine,P.nHeight);
 			break;
		case 5:
			GGrad(list0,list1,P.nWidth,P.nHeight);
			break;
		case 6:
			GIBorder(list0,list1,P.nWidth,P.nHeight);
			break;
		case 7:
			GOBorder(list0,list1,P.nWidth,P.nHeight);
			break;
		case 8:
			GTopHat(list0,list1,P.nWidth,P.nHeight);
			break;
		case 9:
			GBlackTopHat(list0,list1,P.nWidth,P.nHeight);
			break;
	}
	Release2DList(list1);
	Release2DList(list0);

    if ((n==3)||(n==4))
		ReduceImage(pImg1,&gImg1);
	else
		ReduceImage(pImg1,&gImg0);
	gImg1.Destroy();
	gImg0.Destroy();

	if (n>7) {
 		memset(ColorTab,0,1024);
		SetAllPalette(pImg1,ColorTab);
		SetPalette(pImg1,1,255,255,255);
	}
}

int  ColorHistogram(CImage *pImg,int x,int y,int Dx,int Dy,long *pg,int n)
{
 	struct	IMAGEPARAMENT P;
	int		i,j,dp=0;
	BYTE	*buf;

	GetImageParament(pImg,&P);
	buf=(BYTE*) malloc(P.nBytesPerLine);
  	for (i=0;i<256;i++)  pg[i]=0;
	for(i=y;i<y+Dy;i++) 
	{
		GetRectValue(pImg,0,i,P.nWidth,1,buf);
		if (n>3)
 			RgbToHsv(buf,buf,P.nWidth);
		switch(n) {
			case 1:
			case 4:
 				for (j=x;j<x+Dx;j++) pg[buf[j*P.nBytesPerPixel]]++;	
				break;
			case 2:
 			case 5:
				for (j=x;j<x+Dx;j++) pg[buf[j*P.nBytesPerPixel+1]]++;	
				break;
			case 3:
 			case 6:
				for (j=x;j<x+Dx;j++) pg[buf[j*P.nBytesPerPixel+2]]++;	
				break;
		}
	}
	free(buf);

	if (n==4) 
	    dp=HueHistogShift(pg);
	return(dp);
}

void ToRGB(CImage *pImgn,CImage *pImgm,int n)
{
 	struct	IMAGEPARAMENT P;
 	int	    i,x,y;
 	BYTE	*buf;

 	GetImageParament(pImgm,&P);
	pImgn->Destroy();
	pImgn->Create(P.nWidth,P.nHeight,8,0);
  
	buf =(BYTE*) malloc(P.nBytesPerLine);
	for (y=0;y<P.nHeight;y++) {
		GetRectValue(pImgm,0,y,P.nWidth,1,buf);
 		for (x=0,i=0;x<P.nWidth;x++,i+=P.nBytesPerPixel) {
			if (n==0)
				buf[x]=buf[i];
			else if (n==1)
				buf[x]=buf[i+1];
			else
 				buf[x]=buf[i+2];
 		}
		SetRectValue(pImgn,0,y,P.nWidth,1,buf);
 	}
 	free(buf);

	for (i=0;i<256;i++) {
		if (n==0)
			SetPalette(pImgn,i,0,0,i);
		else if (n==1)
			SetPalette(pImgn,i,0,i,0);
		else 
			SetPalette(pImgn,i,i,0,0);
	}
}

void ToHSV(CImage *pImgn,CImage *pImgm,int n)
{
 	struct	IMAGEPARAMENT P;
 	int	    i,x,y;
 	BYTE	*buf,bufp[4];

 	GetImageParament(pImgm,&P);
	pImgn->Destroy();
	pImgn->Create(P.nWidth,P.nHeight,8,0);
  
	buf =(BYTE*) malloc(P.nBytesPerLine);
	for (y=0;y<P.nHeight;y++) {
		GetRectValue(pImgm,0,y,P.nWidth,1,buf);
 		RgbToHsv(buf,buf,P.nWidth);
		for (x=0,i=0;x<P.nWidth;x++,i+=P.nBytesPerPixel) {
			switch(n) {
				case 0 :  
					buf[x]=buf[i];
					break;
				case 1 :  
					buf[x]=buf[i+1];
					break;
				case 2 :
					buf[x]=buf[i+2];
					break;
			}
		}
		SetRectValue(pImgn,0,y,P.nWidth,1,buf);
 	}
 	free(buf);

	if (n==0) {
		for (i=0;i<256;i++) {
			bufp[0]=i;
			bufp[1]=bufp[2]=255;
			HsvToRgb(bufp,bufp,1);
			SetPalette(pImgn,i,(int) bufp[2],(int) bufp[1],(int) bufp[0]);
		}
	}
	else {
		for (i=0;i<256;i++) 
			SetPalette(pImgn,i,i,i,i);
	}
}

void ToYIQLAB(CImage *pImgn,CImage *pImgm,int n)
{
 	struct	IMAGEPARAMENT P;
 	int	    i,x,y;
 	BYTE	*buf;

 	GetImageParament(pImgm,&P);
	pImgn->Destroy();
	pImgn->Create(P.nWidth,P.nHeight,8,0);
  
	buf =(BYTE*) malloc(P.nBytesPerLine);
	for (y=0;y<P.nHeight;y++) {
		GetRectValue(pImgm,0,y,P.nWidth,1,buf);
		if (n<3)
 			RgbToYiq(buf,buf,P.nWidth);
		else
 			RgbToLab(buf,buf,P.nWidth);
		for (x=0,i=0;x<P.nWidth;x++,i+=P.nBytesPerPixel) {
			switch(n%3) {
				case 0 :  
					buf[x]=buf[i];
					break;
				case 1 :  
					buf[x]=buf[i+1];
					break;
				case 2 :
					buf[x]=buf[i+2];
					break;
			}
		}
		SetRectValue(pImgn,0,y,P.nWidth,1,buf);
 	}
 	free(buf);

	for (i=0;i<256;i++) 
		SetPalette(pImgn,i,i,i,i);
}

void ColorSobel(CImage *pImgn,CImage *pImgm,int n)
{
 	struct	IMAGEPARAMENT P,Ps;
 	int	    i,k,x,y;
 	BYTE	*buf;
	BYTE	**listS,**listR,**listG,**listB;
	BYTE	*bufR,*bufG,*bufB;
 
 	GetImageParament(pImgm,&P);

	pImgn->Destroy();
	pImgn->Create(P.nWidth,P.nHeight,8,0);
	listS=Create2DList(pImgn);  
	listR=(BYTE**)malloc(P.nHeight*sizeof(BYTE*));
	listG=(BYTE**)malloc(P.nHeight*sizeof(BYTE*));
	listB=(BYTE**)malloc(P.nHeight*sizeof(BYTE*));

	GetImageParament(pImgn,&Ps);
	bufR=(BYTE*) malloc(Ps.nBytesPerLine*Ps.nHeight);
	bufG=(BYTE*) malloc(Ps.nBytesPerLine*Ps.nHeight);
	bufB=(BYTE*) malloc(Ps.nBytesPerLine*Ps.nHeight);
	for(i=0;i<P.nHeight;i++) {
		listR[Ps.nHeight-1-i]=bufR+i*Ps.nBytesPerLine;
		listG[Ps.nHeight-1-i]=bufG+i*Ps.nBytesPerLine;
		listB[Ps.nHeight-1-i]=bufB+i*Ps.nBytesPerLine;
 	}

 	buf =(BYTE*) malloc(P.nBytesPerLine);
	for (y=0;y<P.nHeight;y++) {
		GetRectValue(pImgm,0,y,P.nWidth,1,buf);
		if (nSobelFlag==1) 
			RgbToYiq(buf,buf,P.nWidth);
		if (nSobelFlag==2) 
			RgbToLab(buf,buf,P.nWidth);
 		for (x=0,i=0;x<P.nWidth;x++,i+=P.nBytesPerPixel) {
			listB[y][x]=buf[i]; 
			listG[y][x]=buf[i+1]; 
			listR[y][x]=buf[i+2]; 
		}
  	}
 	free(buf);

	Sobel(listS,listR,Ps.nWidth,Ps.nHeight);
 	memcpy(bufR,&listS[Ps.nHeight-1][0],Ps.nSize);
	Sobel(listS,listG,Ps.nWidth,Ps.nHeight);
 	memcpy(bufG,&listS[Ps.nHeight-1][0],Ps.nSize);
 	Sobel(listS,listB,Ps.nWidth,Ps.nHeight);
 	memcpy(bufB,&listS[Ps.nHeight-1][0],Ps.nSize);

	for (y=0;y<P.nHeight;y++) {
		int		r,g,b;

 		for (x=0;x<P.nWidth;x++) {
			if (n==0) {
				k = (listR[y][x]>listG[y][x])?listR[y][x]:listG[y][x];
				listS[y][x]= (k>listB[y][x])? k : listB[y][x];
 			}
			else if (n==1) {
				k=listR[y][x]+listG[y][x]+listB[y][x];
				if (k>255) k=255;
				listS[y][x]=k;
  			}
			else {
				r=listR[y][x];
				g=listG[y][x];
				b=listB[y][x];
				k=(int) sqrt((double)(r*r+g*g+b*b));
				if (k>255) k=255;
				listS[y][x]=k;
			}
		}
  	}
 
	for (i=0;i<256;i++) 
		SetPalette(pImgn,i,i,i,i);
 
 	free(listR);
	free(listG);
	free(listB);
	free(bufR);
	free(bufG);
	free(bufB);
	Release2DList(listS);
}

void RemoveBackgrond(CImage *pImgn,CImage *pImgm)
{
	BITMAPINFOHEADER bmi={40,0,0,1,1,0,0,0,0,0,0};
 	struct	IMAGEPARAMENT Pm,Pn;
	LPBITMAPINFO	lpBmi;
	HDC				hMemDC;
	HBITMAP			hbmMask;
	BYTE			*lpBits,*lpbuf;
	RGBQUAD			ColorTab[2]={{0,0,0},{255,255,255}};

 	GetImageParament(pImgm,&Pm);
  	GetImageParament(pImgn,&Pn);
	if ((Pm.nWidth!=Pn.nWidth)||(Pm.nHeight!=Pn.nHeight)) 
		return;

	bmi.biWidth = Pm.nWidth;
	bmi.biHeight = Pm.nHeight ;
	lpBmi=(LPBITMAPINFO) malloc(48);
	memcpy(lpBmi,&bmi,40);
	memcpy(lpBmi->bmiColors,ColorTab,8);
	
	hbmMask=CreateDIBSection(NULL,lpBmi,DIB_RGB_COLORS,(VOID**)&lpBits,NULL,0);

	lpbuf=(BYTE*) pImgn->GetPixelAddress(0,Pn.nHeight-1);
	memcpy(lpBits,lpbuf,Pn.nSize);

	hMemDC=pImgm->GetDC();
 	pImgm->MaskBlt(hMemDC,0,0,hbmMask,SRCAND);
 	pImgm->ReleaseDC();

	DeleteObject(hbmMask);
	free(lpBmi);
}

void AddImage(CImage *pImgn,CImage *pImgm)
{
 	struct	IMAGEPARAMENT  Pm,P;
 	int		i,j,k;
	BYTE	*bufm,*bufn;

 	GetImageParament(pImgm,&Pm);
  	GetImageParament(pImgn,&P);
	if ((Pm.nWidth!=P.nWidth)||(Pm.nHeight!=P.nHeight)) return;
  
	for (i=0;i<P.nHeight;i++) {
		bufm=(BYTE*) pImgm->GetPixelAddress(0,i);
		bufn=(BYTE*) pImgn->GetPixelAddress(0,i);
		if (P.nBitCount==8) {
			for (j=0;j<P.nWidth;j++) {
				if (bufm[j]) bufn[j]=bufm[j];
			}
		}
		else {
			for (j=0;j<P.nWidth;j++) {
				if (bufm[j]) {
					for (k=0;k<P.nBytesPerPixel;k++)
						bufn[j*P.nBytesPerPixel+k]=bufm[j];
				}
			}
		}
	}
}

#endif  //!_INC_IPROCESSEC
 	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美图区在线视频| 色88888久久久久久影院按摩| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 一区精品在线播放| 亚洲午夜免费视频| 国产精品久久久久一区二区三区共| 色综合天天综合| 久热成人在线视频| 亚洲欧洲综合另类在线 | 日韩欧美一区二区三区在线| 色一区在线观看| 成人福利视频网站| 蜜臀a∨国产成人精品| 日韩欧美国产电影| 国产精品香蕉一区二区三区| 欧美一级在线免费| 国产一区二区三区国产| 国产精品国产自产拍高清av王其 | 在线观看日韩av先锋影音电影院| 欧美一区二区二区| 亚洲欧美日韩国产另类专区| 色综合久久中文字幕综合网 | 国产精品久久99| 美女尤物国产一区| 欧美精品一区二区蜜臀亚洲| 91精品国产一区二区三区香蕉| 欧美亚洲日本一区| 色婷婷久久一区二区三区麻豆| caoporen国产精品视频| 成人午夜av影视| 成人丝袜18视频在线观看| 国产精品18久久久久久久网站| 精品一区二区三区在线播放| 裸体在线国模精品偷拍| 日韩和欧美的一区| 日本亚洲视频在线| 日本特黄久久久高潮| 日本中文字幕一区二区视频 | 中文乱码免费一区二区| 久久久久久久免费视频了| 久久亚洲精品国产精品紫薇| 日韩精品一区二区三区中文精品 | 综合久久久久综合| 亚洲日本中文字幕区| 亚洲女与黑人做爰| 亚洲最大色网站| 亚洲超碰97人人做人人爱| 日韩精品乱码免费| 精品一区精品二区高清| 国产成人综合自拍| 成人午夜精品一区二区三区| 成人av在线播放网站| 在线综合+亚洲+欧美中文字幕| 欧美高清一级片在线| 91.麻豆视频| 日韩精品一区二区三区中文精品| wwwwxxxxx欧美| 欧美经典三级视频一区二区三区| 中文字幕一区二区三区在线播放| 亚洲日本护士毛茸茸| 亚洲综合一区二区三区| 日本在线播放一区二区三区| 国产一区激情在线| 97久久精品人人做人人爽50路| 91美女精品福利| 精品视频一区二区三区免费| 欧美成人video| 国产精品久久久久久久久动漫 | 色狠狠色狠狠综合| www.66久久| 91黄色激情网站| 日韩一区二区三区在线视频| 日韩一区二区三区在线| 91精品国产日韩91久久久久久| 欧美精品一二三| 精品剧情在线观看| 国产亚洲精品久| 国产精品第五页| 亚洲视频在线观看一区| 亚洲乱码国产乱码精品精的特点| 亚洲综合免费观看高清完整版| 午夜精品免费在线| 精品系列免费在线观看| 在线亚洲一区二区| 国产欧美精品一区aⅴ影院 | 国产精品久久久久影院亚瑟| 久久久精品国产99久久精品芒果| 日韩免费观看2025年上映的电影| 亚洲一区国产视频| 91精品国产黑色紧身裤美女| 午夜精品福利在线| 欧美一级欧美一级在线播放| 欧美国产精品一区| 午夜精品一区在线观看| 国产成人鲁色资源国产91色综| 欧洲日韩一区二区三区| 久久久亚洲精华液精华液精华液| 久久久精品免费免费| 亚洲h动漫在线| 国产一区二区三区四区五区美女| 欧美男同性恋视频网站| 国产色爱av资源综合区| 秋霞av亚洲一区二区三| 99久久久精品免费观看国产蜜| 91亚洲午夜精品久久久久久| 7777精品伊人久久久大香线蕉的 | 91欧美一区二区| 亚洲欧美另类小说| 另类欧美日韩国产在线| 福利视频网站一区二区三区| 国产精品1区2区| 欧美特级限制片免费在线观看| 国产日韩欧美激情| 国精产品一区一区三区mba桃花| 在线这里只有精品| 亚洲欧美乱综合| 波多野结衣一区二区三区| 国产丝袜欧美中文另类| 福利一区二区在线观看| 亚洲美女免费在线| 99久久精品99国产精品| 91免费国产视频网站| 精品国产91久久久久久久妲己| 亚洲午夜免费电影| 成人ar影院免费观看视频| 久久夜色精品一区| 欧美怡红院视频| 中文字幕字幕中文在线中不卡视频| 国产一区视频网站| 久久综合狠狠综合| 免费成人在线网站| 日韩网站在线看片你懂的| 午夜视频在线观看一区二区| 欧美伊人精品成人久久综合97| 亚洲三级在线免费| 91捆绑美女网站| 一区二区三区欧美| 91黄色激情网站| 亚洲一区在线看| 欧美日韩国产bt| 天天影视涩香欲综合网| 欧美一区二区三区电影| 日本不卡的三区四区五区| 欧美伊人久久大香线蕉综合69| 亚洲一级片在线观看| 欧美日韩综合一区| 日韩电影在线一区二区三区| 欧美r级在线观看| 国产精品亚洲а∨天堂免在线| xnxx国产精品| 成人免费看黄yyy456| 亚洲区小说区图片区qvod| 色综合视频在线观看| 亚洲午夜激情网站| 久久精品国产澳门| 18欧美乱大交hd1984| 精品免费一区二区三区| 91丨九色丨黑人外教| 99久久精品免费观看| 久久精品国产亚洲aⅴ| 亚洲精品成a人| 国产精品福利影院| 国产喷白浆一区二区三区| 日韩精品一区二区三区在线观看| av亚洲精华国产精华| 激情综合网最新| 天天色天天操综合| 夜夜亚洲天天久久| 一区二区在线看| 午夜精品福利久久久| 亚洲国产精品一区二区www| 成人免费在线视频观看| 国产日韩欧美不卡在线| 欧美激情综合五月色丁香小说| 国产精品欧美一级免费| 五月天亚洲婷婷| 91精品91久久久中77777| 99re热视频精品| 国产亚洲一区二区三区在线观看| 久久久久久电影| 国产亲近乱来精品视频| 亚洲黄色小视频| 国产1区2区3区精品美女| 日本二三区不卡| 成人国产精品免费观看| 国产在线精品不卡| 国产成人午夜电影网| 亚洲男同1069视频| 欧洲一区在线观看| 国产精品素人一区二区| 在线观看91视频| 欧美日韩电影在线| 粉嫩av一区二区三区粉嫩 | 欧美日韩一区二区三区四区| 蜜臀久久99精品久久久画质超高清 | 欧美精品久久天天躁| 国产精品久久久久9999吃药| 国产精品18久久久| 亚洲视频 欧洲视频| 久久国产精品区|