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

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

?? mydipview.cpp

?? Visual C++、Matlab圖像處理與識別實用案例精選
?? 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]={0,-1,0,
		           -1,5,-1,
				   0,-1,0};

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

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

	Invalidate(TRUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区免费观看| 国产精品美女一区二区在线观看| 午夜a成v人精品| 亚洲成人你懂的| 亚洲乱码日产精品bd| 韩日欧美一区二区三区| 欧美一区二区三区在线电影| 国产精品你懂的在线欣赏| 国产一区二区成人久久免费影院| 日韩欧美亚洲国产精品字幕久久久| 亚洲图片自拍偷拍| 欧美专区在线观看一区| 精品免费日韩av| 国产成人在线电影| 久久久久久久免费视频了| 久久99精品久久久久久国产越南| 日韩一级大片在线| 久久精品国产精品亚洲红杏| 日韩精品中文字幕一区二区三区| 久久99精品视频| 国产精品大尺度| 欧美午夜精品久久久久久超碰| 夜夜嗨av一区二区三区| 欧美吞精做爰啪啪高潮| 亚洲国产精品自拍| 日韩一区二区三区免费观看| 日韩电影在线观看网站| 26uuu久久综合| 成人网在线免费视频| 日韩毛片精品高清免费| 色噜噜狠狠色综合欧洲selulu| 亚洲午夜免费视频| 制服丝袜亚洲播放| 日韩成人免费电影| 国产网站一区二区三区| 91亚洲午夜精品久久久久久| 亚洲国产精品尤物yw在线观看| 69久久99精品久久久久婷婷| 亚洲va韩国va欧美va精品| 久久久精品黄色| 在线观看日韩一区| 久草热8精品视频在线观看| 国产婷婷一区二区| 久久99国产精品免费| 不卡一卡二卡三乱码免费网站| 久久久蜜臀国产一区二区| 一区二区在线观看av| 久久国产综合精品| 日本一二三四高清不卡| 国产成人精品1024| 国产精品久久久久久久蜜臀 | 国产一区 二区| 92精品国产成人观看免费| 琪琪久久久久日韩精品| 亚洲色图欧美在线| 久久精品一二三| 精品国产一区二区三区忘忧草| 色悠久久久久综合欧美99| 国内精品视频一区二区三区八戒| 亚洲成人黄色影院| 亚洲欧美日韩综合aⅴ视频| 精品国产乱码久久久久久蜜臀 | 在线视频欧美精品| 不卡一二三区首页| 国产 欧美在线| 国产麻豆91精品| 狠狠色狠狠色综合| 激情六月婷婷综合| 美女一区二区视频| 免费成人av在线播放| 视频一区在线播放| 亚洲成av人片在www色猫咪| 亚洲精品中文在线观看| 中文字幕在线不卡一区| 国产亚洲精品7777| 国产日韩欧美一区二区三区综合 | 欧美最猛黑人xxxxx猛交| 91在线视频网址| 色综合色狠狠综合色| 粗大黑人巨茎大战欧美成人| 国产电影一区在线| 国产成人8x视频一区二区| 国产成人免费视频网站| 国产成人免费av在线| 国产精品一卡二卡在线观看| 国产毛片精品一区| 成人一级视频在线观看| 成人av在线资源| 不卡一二三区首页| 91久久精品一区二区| 欧美三片在线视频观看| 91精品国产综合久久小美女| 欧美一级二级三级乱码| 欧美大尺度电影在线| 亚洲自拍偷拍九九九| 国产精品成人网| 日韩中文字幕区一区有砖一区| 亚洲自拍偷拍欧美| 亚洲国产美女搞黄色| 国产精品成人免费在线| 日韩av网站在线观看| 亚洲欧洲制服丝袜| 亚洲视频1区2区| 亚洲欧美日韩综合aⅴ视频| 国产精品九色蝌蚪自拍| 免费成人av在线播放| 欧美美女一区二区三区| 色老汉一区二区三区| 欧美精品在线一区二区三区| 这里只有精品免费| 久久久精品免费网站| 亚洲狼人国产精品| 美女网站在线免费欧美精品| 国产a区久久久| 欧美色手机在线观看| 欧美电视剧在线看免费| 国产精品不卡在线观看| 肉丝袜脚交视频一区二区| 国产在线精品视频| 日本韩国一区二区三区| 欧美性极品少妇| 亚洲国产精品ⅴa在线观看| 成人黄页毛片网站| 亚洲高清视频中文字幕| 久久激五月天综合精品| 91亚洲午夜精品久久久久久| 欧美草草影院在线视频| 亚洲天堂成人网| 激情综合一区二区三区| 欧美日韩综合在线免费观看| 国产日韩欧美精品一区| 日日夜夜一区二区| 99re6这里只有精品视频在线观看| 91精品国产欧美一区二区| 国产精品不卡一区二区三区| 麻豆91免费观看| 色成年激情久久综合| 久久久综合视频| 日本亚洲视频在线| 欧洲一区二区av| 国产精品美女一区二区三区 | 精品福利一区二区三区免费视频| 亚洲欧洲制服丝袜| 风间由美性色一区二区三区| 欧美精品第1页| 一区二区激情视频| 懂色av一区二区三区蜜臀| 日韩精品最新网址| 日韩中文字幕1| 91国偷自产一区二区开放时间| 欧美国产视频在线| 狠狠色丁香久久婷婷综合丁香| 99精品一区二区三区| 一区二区三区在线免费播放| 欧美日韩成人综合| 久久久精品影视| 国产美女一区二区| 国产精品福利一区| 欧美性视频一区二区三区| 日日夜夜精品免费视频| 久久久99精品久久| 色域天天综合网| 日本欧美肥老太交大片| 欧美一卡二卡在线| 国产精品一区二区x88av| 亚洲欧洲日产国产综合网| 秋霞av亚洲一区二区三| av电影在线观看一区| 国产欧美日产一区| 国产成人免费9x9x人网站视频| 精品国产免费一区二区三区香蕉| 亚洲v日本v欧美v久久精品| 91丨国产丨九色丨pron| 中文字幕综合网| 色噜噜偷拍精品综合在线| 亚洲欧美国产三级| 欧美在线色视频| 视频一区二区三区在线| 91精品一区二区三区久久久久久| 日韩av二区在线播放| 日韩一区二区免费在线电影| 久久99精品久久久久久| 国产视频一区在线观看| 不卡一区二区在线| 亚洲制服丝袜av| 在线综合视频播放| 国产在线国偷精品免费看| 中文字幕成人在线观看| 91麻豆文化传媒在线观看| 玉米视频成人免费看| 69久久99精品久久久久婷婷| 寂寞少妇一区二区三区| 国产精品美女www爽爽爽| 色香蕉久久蜜桃| 日韩精品福利网| 久久精品视频免费| 91九色02白丝porn| 奇米影视一区二区三区| 欧美激情资源网| 欧美午夜精品一区|