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

正文內(nèi)容

vc圖象處理教程(留存版)

  

【正文】 量 hBitmap 和一個(gè)類型為 HPALETTE 的全局變量 hPalette。 DWORD i。 case 4: NumColors=16。 return FALSE。 lpRGB++。產(chǎn)生的方法是:①為邏輯調(diào)色板指針?lè)峙鋬?nèi)存,大小為邏輯調(diào)色板結(jié)構(gòu) (LOGPALETTE)長(zhǎng)度加NumColors 個(gè) PALETTENTRY 大小 (調(diào)色板的每一項(xiàng)都是一個(gè) PALETTEENTRY 結(jié)構(gòu) );②填寫(xiě)邏輯調(diào)色板結(jié)構(gòu)的頭 pPalpalNumEntries = NumColors。 //獲得屏幕設(shè)備上下文 if (hBitmap) //hBitmap一開(kāi)始是 NULL,當(dāng)不為 NULL時(shí)表示有圖 { hMemDC = CreateCompatibleDC(hDC)。你可以試著改改第 9項(xiàng)參數(shù),就能體會(huì)到它們的含義了。%MSDevDir%\MFC\INCLUDE??梢钥吹?,我們并沒(méi)有用到項(xiàng)目文件,所以,對(duì)于這種簡(jiǎn)單的程序來(lái)說(shuō),使用命令行編譯還是非常方便的。 圖 移動(dòng)前的圖 圖 移動(dòng)后的圖 還有一種做法是:將圖象放大,使得能夠顯示下所有部分,如圖 。電視信號(hào)中用的就是一種類似于 YUV的顏色表示方法。所以,做圖象處理時(shí),一般采用灰度圖 。 LPBITMAPINFOHEADER lpImgData。 BufSize=OffBits+*LineBytes。 SrcX0=DstX0xOffset。iRectHeight。 //釋放資源和內(nèi)存 ReleaseDC(hWnd,hDc)。如果超出原圖范圍,則填成白色。 HFILE hf。 SrcY1=(float)(*Hold)。 Hnew = (DWORD)(max(fabs(DstY4DstY1), fabs(DstY3DstY2))+)。 //拷貝頭和調(diào)色板信息 memcpy(lpTempPtr,lpPtr,OffBits)。x1++){ //x0,y0為對(duì)應(yīng)的原圖上的坐標(biāo) x0= (DWORD)(x1*cosa+y1*sina+num1)。DstBf,sizeof(BITMAPFILEHEADER))。 LPBITMAPINFOHEADER lpTempImgData。y1。 *lpTempPtr=*lpPtr。 LocalFree(hTempImgData)。x1++){ x0=x1。 lpTempPtr=(char *)lpTempImgData。 BOOL Mirror(HWND hWnd,BOOL XDirection) //Xdirection為 TRUE時(shí)表示水平鏡象,為 FALSE時(shí)表示垂直鏡象變換 { DWORD OffBits,BufSize。 if(hBitmap!=NULL) DeleteObject(hBitmap)。 for(y1=0。 //lpTempImgData為指向新產(chǎn)生位圖數(shù)據(jù)的指針 lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData)。 DstY3=sina*SrcX3+cosa*SrcY3。 sina=(float)sin((double)RotateAngle)。 float DstX1,DstY1,DstX2,DstY2。 圖 兩種坐標(biāo)系間的轉(zhuǎn)換關(guān)系 設(shè)圖象的寬為 w,高為 h,容易得到: () 逆變換為: () 有了上面的公式,我們可以把變換分成三步: o’變成 o; 針旋轉(zhuǎn) a角; o變回 o’,這樣,我們就得到了變換矩陣,是上面三個(gè)矩陣的級(jí)聯(lián)。 _lwrite(hf,(LPSTR)amp。 //對(duì)應(yīng) DstY1在原圖中的 y坐標(biāo) RectHeight=DstY1DstY0。 //表示移動(dòng)后,有圖區(qū)域的左上角點(diǎn)的 x坐標(biāo) DstX1=+xOffset。 //出現(xiàn)對(duì)話框,輸入 x偏移量 xOffset,和 y偏移量 yOffset dlgInputBox = (DLGPROC) MakeProcInstance ( (FARPROC)InputBox,ghInst )。這樣拷貝 (y1y0)行就完成了全部操作,避免了一個(gè)一個(gè)象素的計(jì)算,提高了效率。 使用灰度圖有一個(gè)好處,那就是方便。 (0, 0, 0)是全黑色, (255, 255, 255)是全白色,中間的是 灰色。 這樣就存在一個(gè)問(wèn)題:如果新 圖中有一點(diǎn) (x1,y1),按照公式 ()得到的 (x0,y0)不在原圖中該怎么辦?通常的做法是,把該點(diǎn)的 RGB值統(tǒng)一設(shè)成 (0,0,0)或者 (255,255,255)。 LIB=d:\msdev\LIB。如果你沒(méi)找到這個(gè)批處理文件,可以參考下面的例子,自己做一個(gè)批處理。然后我們調(diào)用 BitBlt函數(shù)在內(nèi)存設(shè)備上下文和屏幕設(shè)備上下文中進(jìn)行位拷貝。 Static HDC hDC,hMemDC。 } ReleaseDC(hWnd,hDc)。 i++) { pPalpalPalEntry[i].peRed=lpRGBrgbRed。 return FALSE。 //NumColors為實(shí)際用到的顏色數(shù) ,即調(diào)色板數(shù)組中的顏色個(gè)數(shù) if(!=0) //如果 ,即為實(shí)際用到的顏色數(shù) NumColors=(DWORD)。 //設(shè)備句柄 HLOCAL hPal。 (2) 一般來(lái)說(shuō), .bMP 文件的數(shù)據(jù)從下到上,從左到右的。 調(diào)色板實(shí)際上是一個(gè)數(shù)組,共有 biClrUsed 個(gè)元素 (如果該值為零,則有 2biBitCount個(gè)元素 )。 這個(gè)結(jié)構(gòu)的長(zhǎng)度是固定的,為 40個(gè)字節(jié) (LONG為 32位整數(shù) ),各個(gè)域的說(shuō)明如下: biSize 指定這個(gè)結(jié)構(gòu)的長(zhǎng)度,為 40。 DWORD bfOffBits。 讓我們?cè)賮?lái)計(jì)算一下: 16種狀態(tài)可以用 4位 (bit)表示,所以一個(gè)象素要用半個(gè)字節(jié)。 我們知道,自然界中的所有顏色都可以由紅、綠、藍(lán) (R, G, B)組合而成。為了防止閃爍,每秒要重復(fù)上述過(guò)程幾十次。 讓我們來(lái)看看下面的例子。所以真彩色圖直接用 R、G、 B三個(gè)分量表示,它又叫做 24位色圖。 WORD biBitCount DWORD biCompression。舉個(gè)例子,如果 biWidth=240,則biWidth’=240;如果 biWidth=241, biWidth’=244)。下面針對(duì) 2色、 16色、 256色位圖和真彩色位圖分別介紹。 BITMAPINFOHEADER bi。 //將 BITMAPINFOHEADER結(jié)構(gòu)從文件中讀出,填寫(xiě)到 bi中 _lread(hf,(LPSTR)amp。 //對(duì)于真彩色圖,沒(méi)用到調(diào)色板 break。 //關(guān)閉文件 if(NumColors!=0) //NumColors不為零,說(shuō)明用到了調(diào)色板 { //為邏輯調(diào)色板分配局部?jī)?nèi)存,大小為邏輯調(diào)色板結(jié)構(gòu)長(zhǎng)度加 //NumColors個(gè) PALETTENTRY hPal=LocalAlloc(LHND,sizeof(LOGPALETTE)+ NumColors* sizeof(PALETTEENTRY))。 if(hPalette) //如果剛才產(chǎn)生了邏輯調(diào)色板 { //將新的邏輯調(diào)色板選入 DC,將舊的邏輯調(diào)色板句柄保存在 //hPrevPalette hPrevPalette=SelectPalette(hDc,hPalette,FALSE)。該函數(shù)的第一項(xiàng)參數(shù)為設(shè)備上下文句柄。 //顯示位圖 BitBlt(hDC, 0, 0, , , hMemDC, 0, 0, SRCCOPY)。特別要注意的是,退出時(shí),別忘了釋放內(nèi)存和資源,這是每個(gè)程序員應(yīng)該養(yǎng)成的習(xí)慣。如下所示: PATH=D:\MSDEV\BIN。如果你熟悉矩陣運(yùn)算,你將發(fā)現(xiàn),實(shí)現(xiàn)這些變換是非常容易的。 如果你用過(guò) Photoshop,Corel PhotoPaint等圖象處理軟件,可能聽(tīng)說(shuō)過(guò)“灰度圖” (grayscale)這個(gè)詞。 (2) 人眼對(duì)于亮度信號(hào)非常敏感,而對(duì)色差信號(hào)的敏感程度相對(duì)較弱。算法的思想是先將所有區(qū)域填成白色,然后找平移后顯示區(qū)域的左上角點(diǎn) (x0,y0) 和右下角點(diǎn) (x1,y1) ,分幾種情況進(jìn)行處理。 int SrcX0,SrcY0,SrcX1,SrcY1。 lpPtr=(char *)lpImgData。 else if( yOffset=0){ DstY0=0。同樣要注意上面 //的問(wèn)題。 } 旋轉(zhuǎn) 旋轉(zhuǎn) (rotation)有一個(gè)繞著什么轉(zhuǎn)的問(wèn)題,通常的做法是以圖象的中心為圓心旋轉(zhuǎn),舉個(gè)例子,圖 30度 (順時(shí)針?lè)较?)后如圖 : 圖 旋轉(zhuǎn)前的圖 圖 旋轉(zhuǎn)后的圖 可以看出,旋轉(zhuǎn)后圖象變大了。 LPBITMAPINFOHEADER lpImgData。 BITMAPFILEHEADER DstBf。 SrcX4=(float)(*Wold)。 //顯示時(shí),采用新圖的寬度和高度, ImgWidth=Wnew。DstBi,(char *)amp。amp。 LocalFree(hTempImgData)。 OffBits=(BITMAPFILEHEADER)。 lpPtr=(char *)lpImgData+(BufSizeLineBytesy0*LineBytes)+x0。 else hf=_lcreat(c:\\,0)。bf,sizeof(BITMAPFILEHEADER))。 *lpTempPtr=*lpPtr。 if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL) { MessageBox(hWnd,Error alloc memory!,Error Message,MB_OK| MB_ICONEXCLAMATION)。 return TRUE。amp。 //做一些必要的改變, 這一點(diǎn)特別要注意 =DstBufSize+sizeof(BITMAPFILEHEADER)。 //新圖每行 占用的字節(jié) DstLineBytes=(DWORD)WIDTHBYTES(Wnew*)。 //新圖四個(gè)角的坐標(biāo) DstX1=cosa*SrcX1+sina*SrcY1。 //出現(xiàn)對(duì)話框,輸入旋轉(zhuǎn)角度 (順時(shí)針?lè)较?) dlgInputBox = (DLGPROC) MakeProcInstance ( (FARPROC)InputBox,ghInst )。 HLOCAL hTempImgData。如圖。 //拷貝一行 (寬度為 RectWidth) memcpy(lpTempPtr,lpPtr,RectWidth)。 //表示移動(dòng)后,有圖區(qū)域的右下角點(diǎn)的 y坐標(biāo) } else if ( yOffset){ DstY0=yOffset。 //將新的緩沖區(qū)中的每個(gè)字節(jié)都填成 255,這樣以后未處理的象素就是白色 memset(lpTempPtr,(BYTE)255,BufSize)。 int RectWidth,RectHeight。容易看出,圖象區(qū)域的 x范圍從 0到 width|tx|,對(duì)應(yīng)原圖的范圍從 |tx|到 width; 圖 tx≤ 0, ty≤ 0的情況 (3) 0 tx width:如圖 。這就提示我們:如果在對(duì) YUV信號(hào)進(jìn)行量化時(shí),可以“偏心”一點(diǎn),讓 Y的量化級(jí)別多一些 (誰(shuí)讓它重要呢? )而讓 UV的量化級(jí)別少一些,就可以實(shí)現(xiàn)圖象信息的壓縮。因此,要表示灰度圖,就需要把亮度值進(jìn)行量化。 如圖 所示,初始坐標(biāo)為 (x0,y0)的點(diǎn)經(jīng)過(guò)平移 (tx,ty)(以向右,向下為正方向 )后,坐標(biāo)變?yōu)?x1,y1)。C:\WIN95。另外,為了節(jié)省篇幅, .bmp文件名被固定為 c:\,可以自己加入打開(kāi)文件對(duì)話框,任意選擇你要顯示的文件。 } //釋放屏幕設(shè)備上下文 EndPaint(hwnd, amp。 上面提到了設(shè)備上下文,相信編過(guò) Windows 程序的讀者對(duì)它并
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1