freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

vc圖象處理教程-在線瀏覽

2025-02-25 07:45本頁面
  

【正文】 ITMAPFILEHEADER bf。 BOOL LoadBmpFile (HWND hWnd,char *BmpFileName) { HFILE hf。 LOGPALETTE *pPal。 //指向 RGBQUAD結(jié)構(gòu)的指針 HPALETTE hPrevPalette。 //設(shè)備句柄 HLOCAL hPal。 //每一行的字節(jié)數(shù) DWORD ImgSize。 DWORD i。 return FALSE。bf,sizeof(BITMAPFILEHEADER))。bi,sizeof(BITMAPINFOHEADER))。舉一個例 //子,對于 2色圖,如果圖象寬是 31,則每一行需要 31位存儲,合 3個 //字節(jié)加 7位,因為字節(jié)數(shù)必須是 4的整倍數(shù),所以應(yīng)該是 4,而此時的 //biWidth=31,biBitCount=1,WIDTHBYTES(31*1)=4,和我們設(shè)想的一樣。你可 //以多舉幾個例子來驗證一下 //LineBytes為每一行的字節(jié)數(shù) LineBytes=(DWORD)WIDTHBYTES(*)。 //NumColors為實際用到的顏色數(shù) ,即調(diào)色板數(shù)組中的顏色個數(shù) if(!=0) //如果 ,即為實際用到的顏色數(shù) NumColors=(DWORD)。 switch(){ case 1: NumColors=2。 case 4: NumColors=16。 case 8: NumColors=256。 case 24: NumColors=0。 default: //不處理其它的顏色數(shù),認(rèn)為出錯。 _lclose(hf)。 //關(guān)閉文件,返回 FALSE } if(!=(DWORD)(NumColors*sizeof(RGBQUAD)+ sizeof(BITMAPFILEHEADER)+ sizeof(BITMAPINFOHEADER))) { //計算出的偏移量與實際偏移量不符,一定是顏色數(shù)出錯 MessageBox(hWnd,Invalid color numbers!,Error Message, MB_OK|MB_ICONEXCLAMATION)。 return FALSE。 //分配內(nèi)存,大小為 BITMAPINFOHEADER結(jié)構(gòu)長度加調(diào)色板 +實際位圖 if((hImgData=GlobalAlloc(GHND,(DWORD) (sizeof(BITMAPINFOHEADER)+ NumColors*sizeof(RGBQUAD)+ ImgSize)))==NULL) { //分配內(nèi)存錯誤 MessageBox(hWnd,Error alloc memory!,ErrorMessage,MB_OK| MB_ICONEXCLAMATION)。 return FALSE。 //文件指針重新定位到 BITMAPINFOHEADER開始處 _llseek(hf,sizeof(BITMAPFILEHEADER),SEEK_SET)。 _lclose(hf)。 //指針 pPal指向該內(nèi)存區(qū) pPal =(LOGPALETTE *)LocalLock(hPal)。 pPalpalVersion = 0x300。 //填寫每一項 for (i = 0。 i++) { pPalpalPalEntry[i].peRed=lpRGBrgbRed。 pPalpalPalEntry[i].peBlue=lpRGBrgbBlue。 lpRGB++。 //釋放局部內(nèi)存 LocalUnlock(hPal)。 } //獲得設(shè)備上下文句柄 hDc=GetDC(hWnd)。 RealizePalette(hDc)。 //將原來的調(diào)色板 (如果有的話 )選入設(shè)備上下文句柄 if(hPalette amp。 hPrevPalette) { SelectPalette(hDc,hPrevPalette,FALSE)。 } ReleaseDC(hWnd,hDc)。 //解鎖內(nèi)存區(qū) return TRUE。產(chǎn)生的方法是:①為邏輯調(diào)色板指針分配內(nèi)存,大小為邏輯調(diào)色板結(jié)構(gòu) (LOGPALETTE)長度加NumColors 個 PALETTENTRY 大小 (調(diào)色板的每一項都是一個 PALETTEENTRY 結(jié)構(gòu) );②填寫邏輯調(diào)色板結(jié)構(gòu)的頭 pPalpalNumEntries = NumColors。 (2) 產(chǎn)生位圖 (BITMAP)句柄,該項工作由函數(shù) CreateDIBitmap來完成。 CreateDIBitmap 的作用是產(chǎn)生一個和 Windows 設(shè)備無關(guān)的位圖。如果位圖用到了調(diào)色板,要在調(diào)用 CreateDIBitmap 之前將邏輯調(diào)色板選入該設(shè)備上下文中,產(chǎn)生 hBitmap后,再把原調(diào)色板選入該設(shè)備上下文中,并釋放該上下文;第二項為指向 BITMAPINFOHEADER的指針;第三項就用常量 CBM_INI,不用考慮;第四項為指向調(diào)色板的指針;第五項為指向 BITMAPINFO(包括 BITMAPINFOHEADER,調(diào)色板 ,及實際的圖象數(shù)據(jù) )的指針;第六項就用常量 DIB_RGB_COLORS,不用考慮。 Windows 操作系統(tǒng)統(tǒng)一管理著諸如顯示,打印等操作,將它們看作是一個個的設(shè)備,每一個設(shè)備都有一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu)來維護(hù)。然而,我們不能直接和這些設(shè)備上下文打交道,只能通過引用標(biāo)識它的句柄 (實際上是一個整數(shù) ),讓 Windows去做相應(yīng)的處理。 Static HDC hDC,hMemDC。 case WM_PAINT: { hDC = BeginPaint(hwnd, amp。 //獲得屏幕設(shè)備上下文 if (hBitmap) //hBitmap一開始是 NULL,當(dāng)不為 NULL時表示有圖 { hMemDC = CreateCompatibleDC(hDC)。 //將調(diào)色板選入內(nèi)存設(shè)備上下文 SelectPalette (hMemDC, hpalette, FALSE)。 } //將位圖選入內(nèi)存設(shè)備上下文 SelectObject(hMemDC, hBitmap)。 //釋放內(nèi)存設(shè)備上下文 DeleteDC(hMemDC)。ps)。 } 在上面的程序中,我們調(diào)用 CreateCompatibleDC 創(chuàng)建一個內(nèi)存設(shè)備上下文。然后我們調(diào)用 BitBlt函數(shù)在內(nèi)存設(shè)備上下文和屏幕設(shè)備上下文中進(jìn)行位拷貝。 BitBlt 函數(shù)的參數(shù)分別為: ,在上面的程序里,為屏幕設(shè)備上下文,如果改成打印設(shè)備上下文,就不是顯示位圖,而是打??; x坐標(biāo); 3. 目標(biāo)矩形左上角點 y 坐標(biāo),在上面的程序中, 2 和 3 為 (0, 0),表示顯示在窗口的左上角; 矩形的寬度; 5. 目標(biāo)矩形的高度; 6. 源設(shè)備上下文,在上面的程序里,為內(nèi)存設(shè)備上下文;7. 源矩形左上角點 x坐標(biāo); 8. 源矩形左上角點 y坐標(biāo); ,在這里為 SRCCOPY,表示直接將源矩形拷貝到目標(biāo)矩形。你可以試著改改第 9項參數(shù),就能體會到它們的含義了。是不是覺得有點枯燥?這一章是有點兒枯燥,特別是當(dāng)你對 Windows 的編程并不清楚時,就更覺得如此。 在本書的附盤中包含所有的源程序,包括頭文件和資源文件和例圖。這些個程序并不是很完善,例如,如果一幅圖很大,屏 幕顯示不下怎么辦?你可以試著自己加上滾動條。圖 。為什么要用命令行編譯呢?主要有兩個好處:第一,不用進(jìn)入 IDE(集成開發(fā)環(huán)境 ),節(jié)省了時間,而且編譯速度也比較快;第二,對于簡單的程序,不用生成項目文件 .mdp 或 .mak,直接就能生成 .exe 文件,這一點,在下面的例子中可以看到。如果你沒找到這個批處理文件,可以參考下面的例子,自己做一個批處理。%MSDevDir%\BIN\%VcOsDir%。%MSDevDir%\MFC\INCLUDE。%MSDevDir%\MFC\LIB。在 DOS PROMPT 下執(zhí)行該批處理文件,執(zhí) 行 set命令,你就能看到新設(shè)置的環(huán)境變量了。D:\MSDEV\BIN\WIN95。C:\WIN95\COMMAND。 INCLUDE=d:\msdev\INCLUDE。 LIB=d:\msdev\LIB。 現(xiàn)在我們就可以進(jìn)行命令行編譯了??梢钥吹?,我們并沒有用到項目文件,所以,對于這種簡單的程序來說,使用命令行編譯還是非常方便的。 使用 ide的方法是: new project,類型是 win32 applicationempty project,然后把 .h,.rc,.c文件 add to project編譯即可。 The University of Southern California does not screen or control the content on this website and thus does not guarantee the accuracy, integrity, or quality of such content. All content on this website is provided by and is the sole responsibility of the person from which such content originated, and such content does not necessarily reflect the opinions of the University administration or the Board of Trustees 第 2 章 圖象的幾何變換 這一章我們將介紹圖象的幾何變換,包括圖象的 平移、旋轉(zhuǎn)、鏡象變換、轉(zhuǎn)置、放縮等。 平移 平移 (translation)變換大概是幾何變換中最簡單的一種了。這兩點之間的關(guān)系是 x1=x0+tx , y1=y0+ty。例如我們想知道,新圖中左上角點的 RGB值是多少?很顯然,該點是原圖的某點經(jīng)過平移后得到的,這兩點的顏色肯定是一樣的,所以只要知道了原圖那點的 RGB值即可。 這樣就存在一個問題:如果新 圖中有一點 (x1,y1),按照公式 ()得到的 (x0,y0)不在原圖中該怎么辦?通常的做法是,把該點的 RGB值統(tǒng)一設(shè)成 (0,0,0)或者 (255,255,255)。例如,圖 ,圖 。 圖 移動前的圖 圖 移動后的圖 還有一種做法是:將圖象放大,使得能夠顯示下所有部分,如圖 。設(shè)原圖的寬和高分別是 w1,h1 則新圖的寬和高變?yōu)?w1+|tx|和h1+|ty|,加絕對值符號是因為 tx, ty有可能為負(fù) (即向左,向上移動 )。在給出源代碼之前,先說明一個問題?;叶葓D是指只含亮度信息,不含色 彩信息的圖象,就象我們平時看到的黑白照片:亮度由暗到明,變化是連續(xù)的。通常劃分成 0到 255共 256 個級別,其中 0 最暗 (全黑 ), 255 最亮 (全白 )。方法是用 256 色的調(diào)色板,只不過這個調(diào)色板有點特殊,每一項的 RGB值都是相同的。 (0, 0, 0)是全黑色, (255, 255, 255)是全白色,中間的是 灰色。為什么會這樣呢?難道是一種巧合?其實并不是。電視信號中用的就是一種類似于 YUV的顏色表示方法。使用這種表示方法有很多好處,最主要的有兩點: (1) 因為 Y代表了亮度,所以 Y分量包含了灰度圖的所有信息,只用 Y分量就能完全能夠表示出一幅灰度圖來。這樣,用同一種表示方法可以很方便的在灰度和彩色圖之間切換,而 RGB表示方法就做不到這一點了。也就是說,圖象的主要信息包含在 Y分量中。這一點將在第 9 章介紹圖象壓縮時仔細(xì)研究,這里就不深入討論了。 YUV 和 RGB之間有著如下的對應(yīng)關(guān)系 () () 當(dāng) RGB 三個分量的大小 一樣時,假設(shè)都是 a,代入公式 (),得到 Y=a, U=0, V=0 。 使用灰度圖有一個好處,那就是方便。如果是 2色圖或 16色圖,還要拼湊字節(jié),很麻煩。所以,做圖象處理時,一般采用灰度圖 。 其它顏色的情況,你可以自己想一想,把算法補(bǔ)全。 好了,言歸正傳,下面給出 Translation 的源代碼。 先看 x方向 (width指圖象的寬度 ) (1) tx≤ width:很顯然,圖象完全 移出了屏幕,不用做任何處理; (2) widthtx≤ 0:如圖 。容易看出,圖象區(qū)域的 x范圍從 tx 到 width,對應(yīng)原圖的范圍從 0到 width tx ; 圖 0 txwidth, 0tyheight的情況 (4) tx ≥ width:很顯然,圖象完全移出了屏幕,不用做任何處理。 這
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1