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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

DLEtandl存據(jù)句柄;?LAPFOHDERB;/信息構(gòu)造;? Cbcctun/擋指針;Bb;/存據(jù)句柄;?ungnd chara指向原始據(jù)指針;?unsigned c指向據(jù)指針;?=p_I;拷貝存已讀取據(jù)句柄;lpiTMAPIFOHEARbalLoc(HGLOAL獲取信息taigdhaFdDIBsindBts是義根據(jù)構(gòu)造數(shù)、pDoc->SetModifiedFlag〔設(shè)置文檔修改標(biāo)志為真、為后續(xù)的修改存盤作準(zhǔn);Width*8)*lpBi->biHeight); //聲明一緩沖區(qū)來暫存處后的圖像數(shù);unsignedHGLOBAdata1handle);//得到該緩沖區(qū)的指針;AfxGetApp(〕->BeginWaitCursor();inti,j,buf;fori=lpBi->biHeighti>=i)//從圖像右下角開場(chǎng)對(duì)圖像的各像素進(jìn)展浮雕處;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);//顯示圖像}方,里我也就可以圖像,時(shí)候前景凹陷背景。同樣需要讀者注意了防止復(fù)使時(shí)要。實(shí)現(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++〕//對(duì)圖像的各個(gè)像素循環(huán)進(jì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=〔cee(cuò)r)in+- nter)c+ce ter;(x,y)(x1、分塊顯示和去除掃描顯示和去除掃描顯示最根本特效顯示方法它表現(xiàn)為從屏幕上去除掉種大戲院種拉幕效果根據(jù)掃描方向每,行,移動(dòng)顯示,。iiew::OnImgeDowcan〔){?CDibDoc*pDoc=GetDocument(〕;HDIBdi;CClientDC pD(this〕;hdib=pDoc->m_hDI//獲取據(jù)句柄;BIMAPINFOHEADERlpDIHdr;/位信息頭構(gòu)造針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;}柵柵移動(dòng)復(fù)雜組合,柵柵類它本思想小,奇數(shù)左/,偶數(shù)右/當(dāng)然也規(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,,,,,完整的,分是生成隨機(jī)數(shù)的過程出??梢杂盟?跟顯示的圖像方塊的坐標(biāo)方法。....................int m,n;intRectize=60;//方塊的、為60個(gè)像素;if(pDIHdr->biWdth%RecSiz!〕/得到圖像水平方塊的個(gè)數(shù)m=lpDIBHdr->biWidth/RectSize+1;elsem= lpDIBHdr->biWidth/RectSize->biHeight%RectSie!=0)/得到圖像垂直方塊的個(gè)數(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/開場(chǎng)隨機(jī)的顯示各個(gè)小方塊doublefMax=AND_MX/定義Rand(函數(shù)的最大值tk=m*n-1;k>=0;k〕c=(int)((double)〔m*n)*rand(〕/fMaxmx=pointc].xintmy=pint[c.y//顯示對(duì)應(yīng)的圖像的小塊SDmy,Reccr->bt-my,RtSizee(cuò)ctiz,lpIBBis,〔BIINDIHdr,DB_OR,SR].xnt[pt]=potk;DlayTime(5}...,就將目標(biāo)區(qū)域由本色逐漸過度就比擬簡(jiǎn)單。下面我們采第二實(shí)現(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)于原對(duì), 如么計(jì);ifbk )否那么對(duì)繼續(xù)減少 ;〔lkYT)1}/后bsSDshD0,lH-biH ItlpDei,〔INlDB_R,COP//于或等于原那么認(rèn)。f=pipDg h)e=u;DTe〔本文上面的內(nèi)容介紹了幾種圖像的特殊顯示效果,代碼在Windows2000和Visual C++6.0編程環(huán)境下編譯通過,運(yùn)行正常,處理到達(dá)了預(yù)期的效果。讀者可以將上面介紹的顯示圖像的函數(shù)和處理思路結(jié)合起來,實(shí)現(xiàn)更多效果。編程實(shí)現(xiàn)灰度圖像與彩色圖像的相互轉(zhuǎn)換hotoShop的圖像處理功能很強(qiáng),其中有一個(gè)功能是將灰度圖像轉(zhuǎn)換為彩色何自己解決這個(gè)問題,值得大家探討,現(xiàn)將我解決這類問題的方法陳述如下:工程應(yīng)用中經(jīng)常要遇到需要彩色圖像到灰度圖像的換的問題,過,,著B),圖像的一個(gè)像用一個(gè)字節(jié)示該點(diǎn)的灰度值,它的值在255之間,數(shù)值越大,該點(diǎn)越,既越,越小那么越。轉(zhuǎn)換公式為Gray(i,j〕=0.11R(i,j)+.59*Gi,j)(i,),其中y)為轉(zhuǎn)換后的圖像在i,j〕點(diǎn)處的灰度值,我們可以觀察該式,其中重最大,所以轉(zhuǎn)換時(shí)可以直接使用G值作為轉(zhuǎn)換后的灰度。至于灰度圖像轉(zhuǎn)換為彩色圖像,技術(shù)上稱為灰度圖像的偽彩色處理,這是一種視覺效果明顯而技術(shù)又不是很復(fù)雜的圖像增強(qiáng)技術(shù)?;叶葓D像中,如果相鄰像素,,彩-圖,,產(chǎn)生相應(yīng)的R、G、,,換公式很多,我用的是最常用的一種,換曲線圖如下:,RGBRG、,L25GxyVC彩色處理后的結(jié)果圖。我這個(gè)實(shí)現(xiàn)函數(shù)中是如何得到灰度位圖的數(shù)據(jù)的就不多講?一文,那里應(yīng)該講的很清楚了。需要讀者注意的是彩色圖像中個(gè)中的個(gè)字別代的,第一個(gè)字為B,第二個(gè)為G值、最后一個(gè)為R值,這個(gè)順序不要搞錯(cuò)了。代碼實(shí)現(xiàn)如下:CDibView::f圖像轉(zhuǎn)換實(shí)現(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論