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

正文內(nèi)容

vc++圖象處理教程-全文預(yù)覽

  

【正文】 pImgData為指向原來(lái)位圖數(shù)據(jù)的指針 lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData)。 //OffBits為 BITMAPINFOHEADER結(jié)構(gòu)長(zhǎng)度加調(diào)色板的大小 OffBits=(BITMAPFILEHEADER)。 int i。 int RectWidth,RectHeight。 LPBITMAPINFOHEADER lpTempImgData。 DWORD OffBits,BufSize。利用 memcpy函數(shù),從 (x0,y0)點(diǎn)開始,一次可以拷貝一整行 (寬度為 x1- x0),然后將內(nèi) 存指針移到 (x0,y0+1)處,拷貝下一行。容易看出,圖象區(qū)域的 x范圍從 0到 width|tx|,對(duì)應(yīng)原圖的范圍從 |tx|到 width; 圖 tx≤ 0, ty≤ 0的情況 (3) 0 tx width:如圖 。 如果想得到一幅灰度圖,可以使用 Sea或者 PhotoShop等軟件提供的顏色轉(zhuǎn)換功能將彩色圖轉(zhuǎn)換成灰度圖。如果是彩色的 256色圖,由于圖象處理后有可能會(huì)產(chǎn)生不屬于這 256種顏色的新顏色,就更麻煩了;這一點(diǎn),今后你就會(huì)有深刻體會(huì)的。你現(xiàn)在該明白我前面所說(shuō)不是巧合的原因了吧。這就提示我們:如果在對(duì) YUV信號(hào)進(jìn)行量化時(shí),可以“偏心”一點(diǎn),讓 Y的量化級(jí)別多一些 (誰(shuí)讓它重要呢? )而讓 UV的量化級(jí)別少一些,就可以實(shí)現(xiàn)圖象信息的壓縮。當(dāng)同時(shí)考慮 U, V分量時(shí),就能夠表示出彩色信息來(lái)。 在表示顏色的方法中,除了 RGB 外,還有一種叫 YUV 的表示方法,應(yīng)用也很多。也就是說(shuō) RGB值從 (0,0, 0), (1, 1, 1)一直到 (255, 255, 255)。因此,要表示灰度圖,就需要把亮度值進(jìn)行量化。 下面的函數(shù) Translation 采用的是第一種做法,即移出的部分被截?cái)?。這種處理,文件大小不會(huì)改變。那么到底新圖中的左上角點(diǎn)對(duì)應(yīng)原圖中的哪一點(diǎn)呢?將左上角點(diǎn)的坐標(biāo) (0,0)入公式 (),得到 x0=tx , y0=ty;所以新圖中的 (0,0)點(diǎn)的顏色和原圖中 (tx , ty)的一樣。 如圖 所示,初始坐標(biāo)為 (x0,y0)的點(diǎn)經(jīng)過(guò)平移 (tx,ty)(以向右,向下為正方向 )后,坐標(biāo)變?yōu)?x1,y1)。 好了,運(yùn)行 ,欣賞一下你今天的勞動(dòng)成果。首先編譯資源文件,輸入 rc ,將生成 件,接著輸入 cl ,就生成 了。d:\msdev\MFC\INCLUDE。C:\WIN95。%LIB% set VcOsDir= 只要把上面的“ d:\MSDEV”改成你自己的 VC 目錄就可以了。%PATH% set INCLUDE=%MSDevDir%\INCLUDE。 在安裝完 Visual C++時(shí),在 bin目錄下會(huì)產(chǎn)生一個(gè) ,它的作用是在命令行編譯時(shí)設(shè)置正確的環(huán)境變量,如存放頭文件的 INCLUDE目錄,存放庫(kù)文件的 LIB目錄等。另外,為了節(jié)省篇幅, .bmp文件名被固定為 c:\,可以自己加入打開文件對(duì)話框,任意選擇你要顯示的文件。不過(guò),當(dāng)一幅漂亮的 bmp 圖顯示在屏幕上時(shí),你還是會(huì)興奮地大叫“ Yeah!”,至少當(dāng)年我是這樣。還可以是反色,擦除,做 “與”運(yùn)算等操作,具體細(xì)節(jié)見 VC++幫助。 SelectObject函數(shù)將與設(shè)備無(wú)關(guān)的位圖選入內(nèi)存設(shè)備上下文中。 } //釋放屏幕設(shè)備上下文 EndPaint(hwnd, amp。 RealizePalette (hDC)。ps)。 產(chǎn)生的邏輯調(diào) 色板句柄 hPalette和位圖句柄 hBitmap 要在處理 WM_PAINT消息時(shí)使用,這樣才能在屏幕上顯示出來(lái),處理過(guò)程如下面的程序。 上面提到了設(shè)備上下文,相信編過(guò) Windows 程序的讀者對(duì)它并不陌生,這里再簡(jiǎn)單介紹一下。 hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpImgData, (LONG)CBM_INIT, (LPSTR)lpImgData+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD), (LPBITMAPINFO)lpImgData, DIB_RGB_COLORS)。 //成功返回 } 對(duì)上面的程序要說(shuō)明兩點(diǎn): (1) 對(duì)于需要調(diào)色板的圖,要想正確地顯示,必須根據(jù) bmp 文件,產(chǎn)生邏輯調(diào)色板。 RealizePalette(hDc)。 } //產(chǎn)生位圖句柄 hBitmap=CreateDIBitmap(hDc,(LPBITMAPINFOHEADER)lpImgData, (LONG)CBM_INIT, (LPSTR)lpImgData+sizeof(BITMAPINFOHEADER)+NumColors*sizeof(RGBQUAD), (LPBITMAPINFO)lpImgData, DIB_RGB_COLORS)。 LocalFree(hPal)。 pPalpalPalEntry[i].peFlags=(BYTE)0。 i NumColors。 //填寫邏輯調(diào)色板結(jié)構(gòu)的頭 pPalpalNumEntries = NumColors。 //將文件內(nèi)容讀入 lpImgData _hread(hf,(char *)lpImgData,(long)sizeof(BITMAPINFOHEADER) +(long)NumColors*sizeof(RGBQUAD)+ImgSize)。 _lclose(hf)。 _lclose(hf)。 MessageBox(hWnd,Invalid color numbers!,Error Message, MB_OK|MB_ICONEXCLAMATION)。 break。 break。 //ImgSize為實(shí)際的圖象數(shù)據(jù)占用的字節(jié)數(shù) ImgSize=(DWORD)LineBytes*。 //我們定義了一個(gè)宏 define WIDTHBYTES(i) ((i+31)/32*4)上面曾經(jīng) //提到過(guò),每一行的字節(jié)數(shù)必須是 4的整倍數(shù),只要調(diào)用 //WIDTHBYTES(*)就能完成這一換算。 //打開文件錯(cuò)誤,返回 } //將 BITMAPFILEHEADER結(jié)構(gòu)從文件中讀出,填寫到 bf中 _lread(hf,(LPSTR)amp。 //實(shí)際的圖象數(shù)據(jù)占用的字節(jié)數(shù) //實(shí)際用到的顏色數(shù) ,即調(diào)色板數(shù)組中的顏色個(gè)數(shù) DWORD NumColors。 //用來(lái)保存設(shè)備中原來(lái)的調(diào)色板 HDC hDc。 //文件句柄 //指向 BITMAPINFOHEADER結(jié)構(gòu)的指針 LPBITMAPINFOHEADER lpImgData。當(dāng)函數(shù)成功時(shí),返回 TRUE,否則返回 FALSE。 顯示一個(gè) bmp 文件的 C 程序 下面的函數(shù) LoadBmpFile ,其功能是從一個(gè) .bmp 文件中讀取數(shù)據(jù) ( 包括BITMAPINFOHEADER,調(diào)色板和實(shí)際圖象數(shù)據(jù) ),將其存儲(chǔ)在一個(gè)全局內(nèi)存句柄 hImgData中,這個(gè) hImgData將在以后的圖象處理程序中用到。這在前面介紹 biSizeImage時(shí)已經(jīng)提到了。 對(duì)于 16色位圖,用 4位可以表示一個(gè)象素的顏色,所以一個(gè)字節(jié)可以表示 2個(gè)象素。對(duì)于用到調(diào)色板的位圖,圖象數(shù)據(jù)就是該象素顏在調(diào)色板中的索引值。 //該顏色的綠色分量 BYTE rgbRed。有些位圖,如真彩色圖,前面已經(jīng)講過(guò),是不需要調(diào)色板的, BITMAPINFOHEADER 后直接是位圖數(shù)據(jù)。 biYPelsPerMeter 指定目標(biāo)設(shè)備的垂直分辨率,單位同上。我們今后所討論的只有第一種不壓縮的情況,即 biCompression為 BI_RGB的情況。 biPlanes 必須是 1,不用考慮。 } BITMAPINFOHEADER。 LONG biXPelsPerMeter。 LONG biHeight。 bfSize 指定文件大小,包括這 14個(gè)字節(jié)。 WORD bfReserved2。 bmp文件大體上分成四個(gè)部分,如圖 。表示真彩色圖時(shí),每個(gè)象素直接用 R、 G、 B三個(gè)分量字節(jié)表示,而不采用調(diào)色板技術(shù)。其實(shí)不光是 Windows位圖,許多圖象文件格式如 pcx、 tif、 gif等都用到了。舉個(gè)例子,如果表的第 0 行為 255, 0, 0(紅色 ),那么當(dāng)某個(gè)象素為紅色時(shí),只需要標(biāo)明 0即可。因?yàn)槊總€(gè)分量有 256 個(gè)級(jí)別,要用 8 位 (bit),即一個(gè)字節(jié) (byte)來(lái)表示,所以每個(gè)象素需要用 3 個(gè)字節(jié)。 表 常見顏色的 RGB組合值 顏色 R G B 紅 255 0 0 藍(lán) 0 255 0 綠 0 0 255 黃 255 255 0 紫 255 0 255 青 0 255 255 白 255 255 255 黑 0 0 0 灰 128 128 128 你大概已經(jīng)明白了,當(dāng)一幅圖中每個(gè)象素賦予不同的 RGB值時(shí),能呈現(xiàn)出五彩繽紛的顏色了,這樣就形成了彩色圖。同樣,綠色和藍(lán)色也被分成 256級(jí)。 圖 骷髏 圖 放大后的骷髏位圖 那么,彩色圖是怎么回事呢? 我們先來(lái)說(shuō)說(shuō)三元色 RGB概念。 我們稱這種顯示器為位映象設(shè)備。 我們知道,普通的顯示器屏幕是由許許多多點(diǎn)構(gòu)成的,我們稱之為象素。那么 Windows 是如何顯示圖象的呢?這就要談到位圖 (bitmap)。例如我們常說(shuō)的屏幕分辨率為640480,刷新頻率為 70Hz,意思是說(shuō)每行要掃描 640個(gè)象素,一共有 480行,每秒重復(fù)掃描屏幕 70次。我們可以看到:整個(gè)骷髏就是由這樣一些黑點(diǎn)和白點(diǎn)組成的。針對(duì)含有紅色成分的多少,可以分成 0到 255共 256個(gè)等級(jí), 0級(jí)表示不含紅色成分; 255級(jí)表示含有 100%的紅色成分。這么多顏色對(duì)于我們?nèi)搜蹃?lái)說(shuō)已經(jīng)足夠豐富了。 有一個(gè)長(zhǎng)寬各為 200 個(gè)象素,顏色數(shù)為 16 色的彩色圖,每一個(gè)象素都用 R、 G、 B 三個(gè)分量表示。這樣當(dāng)我們表示一個(gè)象素的顏色時(shí),只需要指出該顏色是在第幾行,即該顏色在表中的索引值。 Windows 位圖中便用到了調(diào)色板技術(shù)。真彩色圖并不是說(shuō)一幅圖包含了所有的顏色,而是說(shuō)它具有顯示所有顏色的能力,即最多可以包含所有的顏色。 bmp 文件 格式 介紹完位圖和調(diào)色板的概念,下面就讓我們來(lái)看一看 Windows 的位圖文件 (.bmp 文件 )的格式是什么樣子的。 WORD bfReserved1。 這個(gè)結(jié)構(gòu)的長(zhǎng)度是固定的,為 14個(gè)字節(jié) (WORD為無(wú)符號(hào) 16位整數(shù), DWORD為無(wú)符號(hào) 32位整數(shù) ),各個(gè)域的說(shuō)明如下: bfType 指定文件類型,必須是 0x424D,即字符串“ BM”,也就是說(shuō)所有 .bmp 文件的頭兩個(gè)字節(jié)都是“ BM” 。 LONG biWidth。 DWORD biSizeImage。 DWORD biClrImportant。 biHeight 指定圖象的高度,單位是象素。要說(shuō)明的是, Windows位圖可以采用 RLE4,和 RLE8的壓縮格式,但用的不多。 如果 biCompression為 BI_RGB,則該項(xiàng)可能為零 biXPelsPerMeter 指定目標(biāo)設(shè)備的水平分辨率,單位是每米的象素個(gè)數(shù),關(guān)于分辨率的概念,我們將在第 4章詳細(xì)介紹。 第三部分為調(diào)色板 Palette,當(dāng)然,這里是對(duì)那些需要調(diào)色板的位圖文件而言的。 //該顏色的藍(lán)色分量 BYTE rgbGreen。 第四部分就是實(shí)際的圖象數(shù)據(jù)了。 對(duì)于 2色位圖,用 1 位就可以表示該象素的顏色 (一般 0 表示黑, 1表示 白 ),所以一個(gè)字節(jié)可以表示 8個(gè)象素。 要注意兩點(diǎn): (1) 每一行的字節(jié)數(shù)必須是 4的整倍數(shù),如果不是,則需要補(bǔ)齊。 好了,終于介紹完 bmp 文件結(jié)構(gòu)了,是不是覺(jué)得頭有些大?別著急,對(duì)照著下面的程序,你就會(huì)很清楚了 (我最愛看源程序了,呵呵 )。該函數(shù)的兩個(gè)參數(shù)分別是用來(lái)顯示位圖的窗口句柄,和 .bmp文件名 (全路徑 )。 BOOL LoadBmpFile (HWND hWnd,char *BmpFileName) { HFILE hf。 //指向 RGBQUAD結(jié)構(gòu)的指針 HPALETTE hPrevPalette。 //每一行的字節(jié)數(shù) DWORD ImgSize。 return FALSE。bi,sizeof(B
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1