圖像處理:Robert邊緣檢測(cè)算子_第1頁(yè)
圖像處理:Robert邊緣檢測(cè)算子_第2頁(yè)
圖像處理:Robert邊緣檢測(cè)算子_第3頁(yè)
圖像處理:Robert邊緣檢測(cè)算子_第4頁(yè)
圖像處理:Robert邊緣檢測(cè)算子_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

圖像處理:Robert邊緣檢測(cè)算?事情?較多?較雜,早點(diǎn)把學(xué)校的事弄完吧,好久沒(méi)寫(xiě)博客了,最近計(jì)算機(jī)前沿這門課,?師要布置課題,?部分是VerilogHDL程序設(shè)計(jì),腦殼疼,硬件太煩,不過(guò)還好,可以選擇其他?向的哈哈,api學(xué)習(xí)還是有必要的,不必造輪?,不過(guò),要有造輪?的能?,具體分的課題是邊緣檢測(cè)算法的Robert算?書(shū)上只是給個(gè)函數(shù),可以理解為偽代碼,具體實(shí)現(xiàn),還是要??去動(dòng)?的,書(shū)上只是給個(gè)思路?已:核?就是對(duì)像素的處理,獲取位圖像素位,處理像素位,設(shè)置像素位,就這么?部,當(dāng)初想,多么簡(jiǎn)單啊,其實(shí)還是不能?意,遇到?些問(wèn)題,然后慢慢克服,最終解決難題,只有這樣,才能不斷成長(zhǎng),絕對(duì)不能眼??低主要遇到的問(wèn)題,就是獲得位圖的像素位?開(kāi)始,我以為BITMAP結(jié)構(gòu)的bmBits就是存放像素位的,結(jié)果運(yùn)?有問(wèn)題還以為是我??沒(méi)有新加載?個(gè)位圖,在新位圖?存放新像素位,結(jié)果還是不?,調(diào)試時(shí)發(fā)現(xiàn)BITMAP的bmBits始終為0所以問(wèn)題出在這,我們并沒(méi)有真正獲取到位圖的像素位,要獲取位圖的像素位,可以?GetBitmapBits函數(shù),函數(shù)怎么?去查msdn或者百度相應(yīng)的設(shè)置像素位?SetBitmapBits,下?就是Robert算?具體實(shí)現(xiàn)的核?代碼了最后實(shí)現(xiàn)效果:好了,?功告成,?定要注意,獲取設(shè)置位圖像素位,?BITMAP的bmBits成員是不?的,?GetBitmapBits和SetBitmapBits即可最后附上完整win32API代碼://VC++圖像處理程序//圖像的邊緣檢測(cè)-Robert算?//圖像的邊緣檢測(cè)-Robert算?#include<windows.h>#include<cmath>LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗?過(guò)程函數(shù)voidRobertOperator(HDChdc,HDChMemDc,HBITMAPhBitmap,intWidth,intHeight);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){TCHARszAppName[]=TEXT("Robert算?");//設(shè)計(jì)窗?類WNDCLASSwndclass;//窗?類wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗?背景畫(huà)刷(??)wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndclass.hInstance=NULL;wndclass.lpfnWndProc=WndProc;wndclass.lpszClassName=szAppName;//類名wndclass.lpszMenuName=NULL;wndclass.style=CS_HREDRAW|CS_VREDRAW;//注冊(cè)窗?類if(!RegisterClass(&wndclass)){MessageBox(NULL,TEXT("ProgramrequireswindowsNT!"),szAppName,MB_ICONERROR);return0;}//創(chuàng)建窗?HWNDhwnd=CreateWindow(szAppName,TEXT("Robert算?"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,540,630,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,SW_SHOW);UpdateWindow(hwnd);MSGmsg;//消息循環(huán)while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return0;}LRESULTCALLBACKWndProc(HWNDhwnd,UINTuMsg,WPARAMwParam,LPARAMlParam){staticHDChMemDc;staticintxWidth,yHeight;staticBITMAPbm;staticBITMAPbm;staticHBITMAPhBitmap;switch(uMsg){caseWM_CREATE:{//原位圖hBitmap=(HBITMAP)LoadImage(NULL,TEXT("Picture2.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);if(hBitmap==NULL){MessageBox(NULL,TEXT("讀取圖?失敗"),TEXT("Error"),MB_ICONERROR);return0;}//將原位圖選進(jìn)內(nèi)存DCHDChdc=GetDC(hwnd);hMemDc=CreateCompatibleDC(hdc);//內(nèi)存DCSelectObject(hMemDc,hBitmap);ReleaseDC(hwnd,hdc);//計(jì)算位圖的寬和?GetObject(hBitmap,sizeof(bm),&bm);xWidth=bm.bmWidth;yHeight=bm.bmHeight;return0;}caseWM_PAINT:{HDChdc;PAINTSTRUCTps;hdc=BeginPaint(hwnd,&ps);BitBlt(hdc,0,0,xWidth,yHeight,hMemDc,0,0,SRCCOPY);//BitBlt(hdc,0,300,xTempWidth,yTempHeight,hTempMemDc,0,0,SRCCOPY);RobertOperator(hdc,hMemDc,hBitmap,xWidth,yHeight);//BitBlt(hdc,590,0,xWidth,yHeight,hMemDc,0,0,SRCCOPY);EndPaint(hwnd,&ps);return0;}caseWM_CLOSE:DeleteDC(hMemDc);PostQuitMessage(0);//DestroyWindow(hwnd);return0;}returnDefWindowProc(hwnd,uMsg,wParam,lParam);}voidRobertOperator(HDChdc,HDChMemDc,HBITMAPhBitmap,intWidth,intHeight){intRobert_Pixel[4];//Robert算?BYTE*pTempPixel=newBYTE[16*Width*Height];//得到位圖的像素位GetBitmapBits(hBitmap,16*Width*Height,(LPVOID)pTempPixel);BYTE*pPixel=newBYTE[16*Width*Height];for(intj=0;j<4*Height-1;j++)for(inti=0;i<4*Width-1;i++){//?成Robert算?//?成Robert算?Robert_Pixel[0]=pTempPixel[j*4*Width+i];Robert_Pixel[1]=pTempPixel[j*4*Width+i+1];Robert_Pixel[2]=pTempPixel[(j+1)*4*Width+i];Robert_Pixel[3]=pTempPixel[(j+1)*4*Width+i+1];//?成當(dāng)前像素pPixel[j*4*Width+i]=(int)sqrt((Robert_Pixel[0]-Robert_Pixel[3])*(Robert_Pixel[0]-Robert_Pixel[3])+(Robert_Pixel[1]-Robert_Pixel[2])*(Robert_Pixel[1]-Robert_Pixel[2]));//pPixel[j*Width+i]

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論