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

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

?? mydipview.cpp

?? 高斯平滑濾波,可以用與圖形及型號處理計算
?? CPP
字號:
// MyDIPView.cpp : implementation of the CMyDIPView class
//

#include "stdafx.h"
#include "MyDIP.h"

#include "MyDIPDoc.h"
#include "MyDIPView.h"

#include "math.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/*****************************************************
* 
*   函數名稱:
*      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);
}
/////////////////////////////////////////////////////////////////////////////
// CMyDIPView

IMPLEMENT_DYNCREATE(CMyDIPView, CScrollView)

BEGIN_MESSAGE_MAP(CMyDIPView, CScrollView)
	//{{AFX_MSG_MAP(CMyDIPView)
	ON_COMMAND(ID_MENUITEM32778, OnMenuitem32778)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView construction/destruction

CMyDIPView::CMyDIPView()
{
	// TODO: add construction code here

}

CMyDIPView::~CMyDIPView()
{
}

BOOL CMyDIPView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView drawing

void CMyDIPView::OnDraw(CDC* pDC)
{   
	CMyDIPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(pDoc->m_hDIB == NULL)
		return ;
	// TODO: add draw code for native data here
	int i,j;
    unsigned char *lpSrc;
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
	int cxDIB = (int) ::DIBWidth(lpDIB);         // Size of DIB - x
	int cyDIB = (int) ::DIBHeight(lpDIB);        // Size of DIB - y
	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
	// 計算圖像每行的字節數
	long lLineBytes = WIDTHBYTES(cxDIB * 8);
	// 每行
	for(i = 0; i < cyDIB; i++)
	{
		// 每列
		for(j = 0; j < cxDIB; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j;
			// 計算新的灰度值
			//*(lpSrc) = BYTE(255-*lpSrc);
		}
	}
	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
	CRect rect(0,0,cxDIB,cyDIB), rcDIB(0,0,cxDIB,cyDIB);
	::PaintDIB(pDC->m_hDC, &rect, pDoc->m_hDIB, &rcDIB, pDoc->m_palDIB);
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView printing

BOOL CMyDIPView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyDIPView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyDIPView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView diagnostics

#ifdef _DEBUG
void CMyDIPView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CMyDIPView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CMyDIPDoc* CMyDIPView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDIPDoc)));
	return (CMyDIPDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView message handlers

void CMyDIPView::OnSize(UINT nType, int cx, int cy)
{
	CScrollView::OnSize(nType, cx, cy);
}

void CMyDIPView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	SetScrollSizes(MM_TEXT, GetDocument()->m_sizeDoc);
}


//對比度拉伸
//DEL void CMyDIPView::OnMenuitem32777() 
//DEL {
//DEL 	
//DEL 	// 獲取文檔
//DEL 	CMyDIPDoc* pDoc = GetDocument();
//DEL 	int i,j;
//DEL 	int r1=60,r2=200;
//DEL 	double k=1.5;
//DEL     unsigned char *lpSrc;	
//DEL 	ASSERT_VALID(pDoc);
//DEL 	if(pDoc->m_hDIB == NULL)
//DEL 		return ;
//DEL 	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
//DEL 	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
//DEL 	int cxDIB = (int) ::DIBWidth(lpDIB);         // Size of DIB - x
//DEL 	int cyDIB = (int) ::DIBHeight(lpDIB);        // Size of DIB - y
//DEL 	long lLineBytes = WIDTHBYTES(cxDIB * 8);     // 計算圖像每行的字節數
//DEL 	// 每行
//DEL 	for(i = 0; i < cyDIB; i++)
//DEL 	{
//DEL 		// 每列
//DEL 		for(j = 0; j < cxDIB; j++)
//DEL 		{
//DEL 			// 指向DIB第i行,第j個象素的指針
//DEL 			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j;
//DEL 			// 計算新的灰度值
//DEL 			if(*lpSrc<r1) *lpSrc=BYTE(*lpSrc/k);
//DEL 			else if(*lpSrc<r2) *lpSrc= BYTE((*lpSrc-r1)*k+r1/k);
//DEL 			else *lpSrc=BYTE((*lpSrc-r2)/k+255-(255-r2)/k);
//DEL 		}
//DEL 	}
//DEL 	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
//DEL     Invalidate(TRUE);
//DEL }

void CMyDIPView::OnMenuitem32778() 
{
	// TODO: Add your command handler code here
   
	CMyDIPDoc* pDoc = GetDocument();

	//設定模板參數
	double tem[9]={1,2,1,
		           2,4,2,
				   1,2,1};

    //設定模板系數
    double  xishu = 0.0625;   

    //進行模板操作
	pDoc->m_hDIB =Template(pDoc->m_hDIB,tem ,3,3, xishu);

	Invalidate(TRUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精一区二区三区| 欧美经典一区二区| 欧洲一区在线观看| 色婷婷狠狠综合| 99综合电影在线视频| 99精品视频免费在线观看| 国产凹凸在线观看一区二区| 国产v综合v亚洲欧| 不卡视频一二三四| 91免费国产在线| 91理论电影在线观看| 欧美日韩亚洲高清一区二区| 欧美日韩国产不卡| 精品精品国产高清a毛片牛牛 | 免费国产亚洲视频| 久久精品国产一区二区三区免费看 | 美女高潮久久久| 久久精品久久99精品久久| 国产一区二区三区最好精华液| 国产盗摄精品一区二区三区在线| 粉嫩13p一区二区三区| 91久久精品国产91性色tv| 欧美性生活久久| 欧美成人bangbros| 国产精品理伦片| 亚洲电影在线播放| 久久成人综合网| 99热精品一区二区| 欧美一区二区日韩一区二区| 国产三级久久久| 亚洲精品视频观看| 日本aⅴ亚洲精品中文乱码| 国产毛片精品视频| 欧美亚洲高清一区| 精品国产乱码久久久久久蜜臀 | 亚洲一区二区美女| 九九**精品视频免费播放| 成年人午夜久久久| 91精品国产综合久久久久| 国产人伦精品一区二区| 亚洲高清免费在线| 成人中文字幕在线| 日韩一区二区免费高清| 亚洲伦理在线精品| 国产一区二区精品久久| 欧美日韩中文字幕一区二区| 中文字幕 久热精品 视频在线| 亚洲一区成人在线| 丁香桃色午夜亚洲一区二区三区| 欧美日韩免费观看一区二区三区| 欧美韩国日本一区| 久久国产婷婷国产香蕉| 欧美性大战久久久久久久| 国产欧美一区二区精品秋霞影院 | 亚洲欧美影音先锋| 久久精品国产久精国产爱| 91高清视频在线| 国产精品网站一区| 国产一区二区三区在线观看免费| 欧美精选在线播放| 一区二区三区中文在线| 国产激情精品久久久第一区二区 | 国产亚洲一本大道中文在线| 天天色天天操综合| 91蜜桃网址入口| 国产精品成人一区二区艾草 | 一本一道综合狠狠老| 久久久久久影视| 精品亚洲aⅴ乱码一区二区三区| 欧美日本一区二区三区四区| 亚洲综合丝袜美腿| 91麻豆蜜桃一区二区三区| 国产精品欧美一区二区三区| 丁香婷婷综合网| 国产精品三级久久久久三级| 成人一二三区视频| 欧美经典一区二区| av高清久久久| 亚洲三级电影网站| 91啪九色porn原创视频在线观看| 中文字幕一区二区不卡| av在线综合网| 亚洲免费伊人电影| 欧美中文字幕一区| 视频一区中文字幕国产| 在线综合视频播放| 久久激五月天综合精品| 久久久综合九色合综国产精品| 国产九色sp调教91| 国产精品成人午夜| 欧美视频在线播放| 蜜臀精品久久久久久蜜臀| 26uuu亚洲| www.色综合.com| 亚洲一级二级在线| 日韩欧美中文一区| 成人一级视频在线观看| 亚洲精品视频免费看| 91精品国产综合久久久久久久| 国产原创一区二区| 亚洲日本成人在线观看| 欧美精品1区2区3区| 国产一区二区三区精品欧美日韩一区二区三区 | 久久亚洲欧美国产精品乐播| 成人av在线影院| 性久久久久久久久| 2021国产精品久久精品| 色天使色偷偷av一区二区| 人禽交欧美网站| 国产精品的网站| 欧美一区二区三区在线观看视频 | 香蕉久久夜色精品国产使用方法 | 午夜精品久久久久久久久| 欧美成人性战久久| 91在线视频播放| 激情综合一区二区三区| 又紧又大又爽精品一区二区| 精品免费日韩av| 欧美色精品天天在线观看视频| 国产一区91精品张津瑜| 无码av免费一区二区三区试看 | 亚洲一区二区三区美女| 久久久不卡网国产精品一区| 欧美亚洲国产bt| 成人av在线资源| 国产精品一区二区三区四区| 偷拍自拍另类欧美| 国产精品高潮呻吟久久| 久久综合色之久久综合| 91精品国产综合久久福利| 91污片在线观看| 风流少妇一区二区| 免费欧美日韩国产三级电影| 亚洲综合免费观看高清完整版| 国产日韩视频一区二区三区| 欧美大黄免费观看| 欧美精品一卡二卡| 欧美三级一区二区| 色国产综合视频| 97久久精品人人做人人爽| 国产很黄免费观看久久| 久久99精品久久久久久动态图| 亚洲成人免费看| 亚洲与欧洲av电影| 亚洲人成伊人成综合网小说| 国产精品国产精品国产专区不蜜| 国产色产综合产在线视频| 精品久久久久久无| 日韩午夜激情视频| 日韩一区二区三区四区| 日韩一区二区三区视频在线观看| 欧美日韩国产成人在线91| 欧美日韩成人综合| 91精品在线免费| 日韩一二三区视频| 337p粉嫩大胆噜噜噜噜噜91av | 欧美精品在欧美一区二区少妇| 欧美亚洲精品一区| 欧美午夜理伦三级在线观看| 欧美在线一二三| 欧美日韩和欧美的一区二区| 欧美日韩免费视频| 日韩亚洲欧美成人一区| 2欧美一区二区三区在线观看视频| 久久色视频免费观看| 国产人成一区二区三区影院| 国产精品国产三级国产| 亚洲精品老司机| 亚洲777理论| 经典一区二区三区| 国产精品一级在线| aaa欧美日韩| 欧美老年两性高潮| 精品嫩草影院久久| 国产精品久久久久久亚洲伦 | 久久精品国产一区二区| 国产精品一线二线三线精华| aaa欧美色吧激情视频| 日韩西西人体444www| 精品国产乱码久久久久久闺蜜| 久久精品一区二区三区av| 亚洲色欲色欲www| 午夜国产精品影院在线观看| 国产乱码精品1区2区3区| 一本一本大道香蕉久在线精品| 在线综合亚洲欧美在线视频| 久久久国际精品| 午夜精品久久久久久久久| 国产精品1区2区| 精品1区2区3区| 久久久久久久精| 亚洲一区二区三区美女| 国产精品18久久久久久久久 | 国产精品欧美精品| 午夜免费久久看| 成人av在线网站| 欧美成人a∨高清免费观看| 1000部国产精品成人观看| 免费在线观看一区二区三区| 91视频观看免费|