圖像的顯示保存處理_第1頁
圖像的顯示保存處理_第2頁
圖像的顯示保存處理_第3頁
圖像的顯示保存處理_第4頁
圖像的顯示保存處理_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

保存處理PAGEPAGE10————————————————————————————————作者:————————————————————————————————日期:,,,,256采BMP由于在實際工程和效果驗證經(jīng)常256壓縮P,例通過黑白采集卡采得到是,所我們在講座范例所都是BMP灰果能夠作到熟練于BMP操作。BP作indows,性我們在講過那,是8bit,是黑白效果黑灰(作〕值0,最白灰值255,灰值隨機布在255,黑,灰0,白(),灰于5是在B分是并且256我們對給操作灰BMP實碼。、BMP操作 首先我們回憶講重:BMP包括頭構造BTMAPFLEHEAER頭構造 BIAPINFOEADER、顏表GQUAD和四局部時根構造大小寬高現(xiàn)調(diào)板值里注意在行值填充四字節(jié)邊界,存儲長四字節(jié),缺乏時將0填充。述知識場寫序關平臺何序問題再贅述用面向象雖然面向封裝起來保護不外界干擾,提高平安,平安降低執(zhí)行為代價此,充利序檔視構造序直接使AI函來微軟SDN名look子,該子演示何作Dib興趣參考,定獲。啟動 isul ,生成名Dib檔序,將Viw基類設olliew,目顯示時支持滾動條另外序檔(CDibDoc.h〕聲明宏及公變量: 最后將序字符串表字符串資源IR_DiE修改:nDb\\Di\ibF.b\\n.bnDb.DocumentnDumet目序話框選擇BP或DIB1取BP根B構造P入此充利檔視構造重載擋Onment()函戶自動生成序翻話框選擇,然后序?qū)⒆詣诱{(diào)該函執(zhí)行。該函數(shù)的實現(xiàn)代碼如下所示: 上面的方法是通過CFile類對象的操作來讀取位圖文件的,它需要分析位圖中的文件頭信息,從而確定需要讀取的圖像長度。這種方法相對來說有些繁瑣,其實還可以以一種相對簡單的方法讀取位圖數(shù)據(jù),首先在程序的資源中定義DIB類型資源,然后添加位圖到該類型中,將圖像數(shù)據(jù)以資源的形式讀取出來,這時候就可以根據(jù)所獲取的數(shù)據(jù)中的位圖信息構造來獲取、顯示圖像數(shù)據(jù)了。下面的函數(shù)實現(xiàn)了,該函數(shù)的實現(xiàn)代碼如下所示:2、 灰度位圖數(shù)據(jù)的存儲 為了將圖像處理后所得到的像素值保存起來,我們重載了文檔類的OnSavDocument(函數(shù),這樣用戶在點擊veSavs單后程序用該函數(shù),實現(xiàn)圖像數(shù)據(jù)的存儲。該函數(shù)的實現(xiàn)如下:、的操作 通過上面的操作,我們可以獲取圖像中的數(shù)據(jù)了,現(xiàn)在的一個是如在中顯示出圖像數(shù)據(jù)?;叶葓D像要確顯示,實現(xiàn)。首先我們一下,該構造定義如下: 可以通過DC:ePaet(、CD::aielet)相的AP,indows定義的息WURYNEWPETTE、WM_PALETTECNGD圖類中處理定義息M_DOREIE該息在定義如下:#defeWREIEPAL(WM_R101來實現(xiàn)的操作。需要處理的時將程序的WM_QUERYNEWLETTE、MPLETTCGED如一將時,將收到M_QUERYNEPALET息,通該將要收到點,它一時實現(xiàn)其的后將收到_PTTEANGD息通其它,時一該實現(xiàn)其戶。上的息是的,所以我們在中這個息,然后通個,得程序時載的。我們定義的用戶息WM_REIP用通它收到息,該其。下面我們出了個息的處理函數(shù)的實現(xiàn)代碼: :讀可以從后面的顯示的實現(xiàn)出我們在顯示時實現(xiàn)了。上的處理相對來說繁瑣,可對來說理,所以這樣作的處是在取灰度位圖時可以文件中的信息,了文件讀取度,在一個ǎ ×下Ч/p>三DIB設備CDC成員::Bb(C::SechBt)來實現(xiàn)可以通過PI函數(shù)SDBBisToDviceSretchBBit)來實現(xiàn),函數(shù)中具所用到的個參數(shù)的意義可以參MSD。其中tretchBBits)和D:trchBl可以將圖像進展放大縮小顯示。從文檔中位圖文件時CDBViw類的OnInitiaUpdae函數(shù)將被用,可以在該尺寸設置,Onw:、小結在本期講座里我們主要介紹何操作灰度,它有較強表性,同時為后續(xù)像處編程學習作必要準備工作,經(jīng)過學習,對于何操作其它類型BMP像文件,可以到達舉一反三作VC字像處編程講座之四BMP像特效操作上期講座我們主要講述BMP像據(jù)像和調(diào)色板操作等內(nèi)容,在上面像特效顯有,可以在后工程化我們件件效在件一像像特效,indows幕保護程序就各各樣像特效,到和一像處件方式供戶使,可以方便在程序像特效,PhotoShopAuhowe節(jié)浮雕雕刻百頁窗旋轉(zhuǎn)、掃描、柵條、馬賽克、和漸隱等效過期講座學習,讀朋友們可以自己動手制作有特效效件像我們講過主要有BitBltetDIBitsToDevicehDIBits〔等需要注意是,在特效時,并不是適宜Blt()是設相關(D,SIBtsDeviceStretchIBits(設備無關(DIB)由于我們講座里處是設備無關,以我們主要關心是后應,其SetDIBitsToDevice()使起較死,遠不StretchDIBits(〕靈活,并且對大多特效無能為力,以為像特效效,需要使StretchDIBits (,什么原因,我想可能在時同何含義,可以參考微MSDN。像特殊效根本思路是要么是操作像像素,要么是對像塊一,對像對于種要:1像像操作;3.顯對應像塊;4.在連續(xù)像塊之間插入一固定延遲。其像塊劃決定像方像塊順序決定方向和據(jù)同效同和在后面的各特效介紹何塊和決定次序為使像過程明表出,要在像到sleep()Settime),于Windows是于操作,時對于像說準,為準時,可以timeeTe(,要inmlibMmsystem,:vdDelayme(Oti){DORDeginmeEndme;BgimieGetm);/、單位;do{EndTteGTi(〕;/再次;}whle(Endime-BegnTi〕}、操作位圖像素顯示特效介紹直操作圖像像素灰度值圖像顯示主介紹如何圖像浮雕和雕刻效果經(jīng)??措娨暸笥阎⒁鉀]電視顯示特效果圖像??和??特效圖像浮雕效果和圖像雕刻效果經(jīng)特效圖像視看上去仿佛是3技術也許就是什么種技術那么流行原因吧其完全可以單圖像算法看似復雜高深顯下面以標準La原效果圖,同VC開發(fā)平臺上源代碼。1.浮雕圖像浮雕圖效果是指圖像向凸背景所謂浮雕概念是指標繪圖像上像素和左上像素值圖像保持一亮呈色程差加128常量需讀者注意是像素值候和左上像素被防止經(jīng)像素應該從圖像右下像素開場,下面是源代碼:d ibew:F(〕 /

DLEtandl存據(jù)句柄;?LAPFOHDERB;/信息構造;? Cbcctun/擋指針;Bb;/存據(jù)句柄;?ungnd chara指向原始據(jù)指針;?unsigned c指向據(jù)指針;?=p_I;拷貝存已讀取據(jù)句柄;lpiTMAPIFOHEARbalLoc(HGLOAL獲取信息taigdhaFdDIBsindBts是義根據(jù)構造數(shù)、pDoc->SetModifiedFlag〔設置文檔修改標志為真、為后續(xù)的修改存盤作準;Width*8)*lpBi->biHeight); //聲明一緩沖區(qū)來暫存處后的圖像數(shù);unsignedHGLOBAdata1handle);//得到該緩沖區(qū)的指針;AfxGetApp(〕->BeginWaitCursor();inti,j,buf;fori=lpBi->biHeighti>=i)//從圖像右下角開場對圖像的各像素進展浮雕處;forj=lpBi->biWidth;j>=2j )? 浮雕處DatalpB(yǎng)i->biHeight-i)*WIDTHBYTES〔lpBi->biWidth*8〕+j)-lpBi->biHeight-i+1)*WIDTHBYTES(lpBi->biWidth*8)+j-1)+128;if(buf>255)buf=255;if〔buf<0)buf=0;*(data+(lpBi->biHeight-i)*WIDTHBYTES(lpBi->biWidth*8〕+j)=(BYTE〕buf;}for( j=0; jbiHeightji=0i+〔pData+i*WIDTHBYTES(lpBi->biWidth*8〕+j〕=*(dat(yī)a+i*WIDTHBYTES〔lpB(yǎng)i->biWidth*8〕+j); AfxGetApp〔)->〔=hdib//將處過的圖像數(shù)寫回pDoc中的圖像緩沖區(qū);GlobalUnlock((HGLOBALhdib);//a1handle);Invalidate(TRUE);//顯示圖像}方,里我也就可以圖像,時候前景凹陷背景。同樣需要讀者注意了防止復使時要。實現(xiàn)代碼如下:voidCDibView::OnDKImage(){? //TOAddyourcommandhandlercode here?HANDLtahandle;//的的一、;LPBITMAPIFOHEADER lpBi;?CDibDoc*pDoc=GetDocument〔);?HDIBhdib;? unsigned char*pData;unsignedchar *data;hdib=pDoc->m_hDIB;//?lpBi=ITAPINFOEADR〕Globalock((HLOBAL)hdibpDat(yī)a=(unsignedcharFindDIBBitsPTlpBi);pDocetModifiedFlagTRE?dat(yī)a1handle=GlobalAlloc(GMEM_SA,WIDTHES(lpi->biWidth*8)*lpi->biHeight〕;//;data=(unsignedr*)GlobalLock〔(HGLOBAL)data1handle);//得到新的緩沖去的指針;AfxGetApp()->BeginWaitCursor();?int i,j,buf;? for( i=0;i<=lpBi->biHeight-2; i++〕//對圖像的各個像素循環(huán)進展雕刻處理;? for(j=0;j<=lpBi->biWidthj

?

buf=*〔pData+(lpB(yǎng)i->biHeight-i)*WIDTHBYTES〔lpB(yǎng)i->biWidth*8)+j)-*〔pData+(lpBi->biHeight-i-1)*WIDTHBYTES〔lpBi->biWidth*8)+j+1)+128;雕刻處理;? if(buf>255) buf=255;? if(buf<0)buf=0;? 〔data+(lpBi->biHeight-i〕*WIDTHBYTES〔lpB(yǎng)i->biWidth*8〕+j)=(BYTE〕buf;}for(j=0; jbiHeight; j++)? for( i=0; ibiWidth;i++) /;*(pData+i*THBYESlpBi->biidth*j)=*(data+i*WBTElpBi>biWidth*8)+j;pDoc->m_hDIB =hdib//pDoc;GlobalUnlock〔(HGLOBAL)hdib);//解鎖、釋放緩沖區(qū);alUnlock((HGLOBAL)data1handleGlobalree(GLBALHGLOBAL)data1handle;nvalidate〔TRUE);//3.圖像的旋轉(zhuǎn),最,lefttop,bottom〕,圖像(x,y〕中〔centerycenter針旋轉(zhuǎn)agle度后,新的位置〔x1y1)的:xcenter= (width+1)/2+left;ycenter = (eight+〕/2+top? 1 =-) coθy-te)en r;y1=〔ceer)in+- nter)c+ce ter;(x,y)(x1、分塊顯示和去除掃描顯示和去除掃描顯示最根本特效顯示方法它表現(xiàn)為從屏幕上去除掉種大戲院種拉幕效果根據(jù)掃描方向每,行,移動顯示,。iiew::OnImgeDowcan〔){?CDibDoc*pDoc=GetDocument(〕;HDIBdi;CClientDC pD(this〕;hdib=pDoc->m_hDI//獲取據(jù)句柄;BIMAPINFOHEADERlpDIHdr;/位信息頭構造針BTE*lpDIBBits/向位針;HDC hDC=pC.GetSafedc()/上;lpDIBHdr=(BITMAINFOHEADR *)GlaLock(hib//得位頭信息;lpDIBBits=(BYTE*〕lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQAD)/獲取向;SetStretchBltodehDCLORNCLO顯示;for〔inti;ibiHeight;i{ /次顯示0iIBitsoDevice(hD,0,0,lpDIBHr->biWdth,DIBHiHei,0,,ilpDItsTMPINFO〕lpDrIB_RGB_COLO);DelayTime〔50);//}Glreturn;2://由于篇幅限省略了面樣ChrWhi//義刷子;Ch ldru=pDC>Sctjec)int ;lpDIBHdriHeighti){iD>cle(DIBr-iWihpIB>bHihDlime(50);} ?,n,m、n具、,kk-、*mk*n-1將在面子我8。.intm=8;it =IHr->biHehm;/能夠8;for〔int l=1<=m;l+t{1、*1n1;chIBs4*+r,,, BHd>Heh-4*l+1,lpDBHdr->bidh1,lDIBs,LPBITMAPINO)IBHdDIB_RG_COLORSSRCCOPY)//juanlixioguoDelayTime(50;}柵柵移動復雜組合,柵柵類它本思想小,奇數(shù)左/,偶數(shù)右/當然也規(guī)反/面代碼柵子:t=;n=bei+i0;pIHj{//偶數(shù);SDIs 〔hj,,jBHdh-,,is〔LPBITMFOpH,SRCCPY/juaxouo=j+;//奇數(shù);StretchDIBits (hDC,j,lpDIBHdr->biHeight-i,m,i,j,0,m,i,lpDBBits,PITMAPINFOlpDBHdr,DIB_RGB_COLOS,SRCCOPY);//Delayime(20,,,,,完整的,分是生成隨機數(shù)的過程出??梢杂盟?跟顯示的圖像方塊的坐標方法。....................int m,n;intRectize=60;//方塊的、為60個像素;if(pDIHdr->biWdth%RecSiz!〕/得到圖像水平方塊的個數(shù)m=lpDIBHdr->biWidth/RectSize+1;elsem= lpDIBHdr->biWidth/RectSize->biHeight%RectSie!=0)/得到圖像垂直方塊的個數(shù)n= pDIBHdr->bHeight/RectSize+;elsen=lpDIBHdrbiHeight/RectSiz*point=newOIT[n*m];/;POINTpoinr(int a=0;afor〔intb=bx=a*RectSizey=b*RectSiz(point+a*b+b)=poin/開場隨機的顯示各個小方塊doublefMax=AND_MX/定義Rand(函數(shù)的最大值tk=m*n-1;k>=0;k〕c=(int)((double)〔m*n)*rand(〕/fMaxmx=pointc].xintmy=pint[c.y//顯示對應的圖像的小塊SDmy,Reccr->bt-my,RtSizeectiz,lpIBBis,〔BIINDIHdr,DB_OR,SR].xnt[pt]=potk;DlayTime(5}...,就將目標區(qū)域由本色逐漸過度就比擬簡單。下面我們采第二實現(xiàn)代碼:. //緩沖區(qū)樣大小內(nèi)存;y=lloSHARh*lpr->tlpbEG(hy;//將緩沖區(qū);f(t0;kBH-H;+{*bits+k=(BYTE)255;}/色tisD,0lHr->bi,pIHdr-bight,0,,lpBHdr->bidth,lpDIBHbiHeightlpbit,(LPBITMAPINFO)lpDIHrD_RGB_COLORSRP/;L nls;d?h*dbeh

na;fn=k判斷否待已經(jīng)于原對, 如么計;ifbk )否那么對繼續(xù)減少 ;〔lkYT)1}/后bsSDshD0,lH-biH ItlpDei,〔INlDB_R,COP//于或等于原那么認。f=pipDg h)e=u;DTe〔本文上面的內(nèi)容介紹了幾種圖像的特殊顯示效果,代碼在Windows2000和Visual C++6.0編程環(huán)境下編譯通過,運行正常,處理到達了預期的效果。讀者可以將上面介紹的顯示圖像的函數(shù)和處理思路結合起來,實現(xiàn)更多效果。編程實現(xiàn)灰度圖像與彩色圖像的相互轉(zhuǎn)換hotoShop的圖像處理功能很強,其中有一個功能是將灰度圖像轉(zhuǎn)換為彩色何自己解決這個問題,值得大家探討,現(xiàn)將我解決這類問題的方法陳述如下:工程應用中經(jīng)常要遇到需要彩色圖像到灰度圖像的換的問題,過,,著B),圖像的一個像用一個字節(jié)示該點的灰度值,它的值在255之間,數(shù)值越大,該點越,既越,越小那么越。轉(zhuǎn)換公式為Gray(i,j〕=0.11R(i,j)+.59*Gi,j)(i,),其中y)為轉(zhuǎn)換后的圖像在i,j〕點處的灰度值,我們可以觀察該式,其中重最大,所以轉(zhuǎn)換時可以直接使用G值作為轉(zhuǎn)換后的灰度。至于灰度圖像轉(zhuǎn)換為彩色圖像,技術上稱為灰度圖像的偽彩色處理,這是一種視覺效果明顯而技術又不是很復雜的圖像增強技術?;叶葓D像中,如果相鄰像素,,彩-圖,,產(chǎn)生相應的R、G、,,換公式很多,我用的是最常用的一種,換曲線圖如下:,RGBRG、,L25GxyVC彩色處理后的結果圖。我這個實現(xiàn)函數(shù)中是如何得到灰度位圖的數(shù)據(jù)的就不多講?一文,那里應該講的很清楚了。需要讀者注意的是彩色圖像中個中的個字別代的,第一個字為B,第二個為G值、最后一個為R值,這個順序不要搞錯了。代碼實現(xiàn)如下:CDibView::f圖像轉(zhuǎn)換實現(xiàn)函數(shù)// TDd yur omdhndler eheDLE da1haLPAPFOEADR l;? TMAPINO m_Diboc *pDoc=GetDocument(;HDIB unsignedchar unsigned char *datib=o>tH();/,eginWaitCurs();Bi=PMANFOHEADER)Globaok〔HGLOBAL)i);hData=unsinecha*)FindDits((PS)li);m_pMI=w BITMAPINO;/生成彩色?m_BM->bmiarbiitCoun=24? m_pB-bmHead.biClrImporant=0;m_pMI>bmiHar.bClrUsed=0?m_pBMI-bmHeader.biCompsion=BI_RGB?_pBMI->bmiHeaderbiHeight=lpi>biHeight;m_pBMI->miader.biWidt=l->biWit;mBMI>bmiHeader.iPlas=1;mBMI>bmiaebiSz=sizeofITMPIFOHEADER)?m_pBMI->bmiader.biXPelsPMete=0;m_pBMI->miHeader.biYlsrMete=0? Szmge=WTHYESlpi>biWth*8)*lp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論