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

下載本文檔

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

文檔簡介

圖像處理:Robert邊緣檢測算?事情?較多?較雜,早點把學校的事弄完吧,好久沒寫博客了,最近計算機前沿這門課,?師要布置課題,?部分是VerilogHDL程序設計,腦殼疼,硬件太煩,不過還好,可以選擇其他?向的哈哈,api學習還是有必要的,不必造輪?,不過,要有造輪?的能?,具體分的課題是邊緣檢測算法的Robert算?書上只是給個函數,可以理解為偽代碼,具體實現,還是要??去動?的,書上只是給個思路?已:核?就是對像素的處理,獲取位圖像素位,處理像素位,設置像素位,就這么?部,當初想,多么簡單啊,其實還是不能?意,遇到?些問題,然后慢慢克服,最終解決難題,只有這樣,才能不斷成長,絕對不能眼??低主要遇到的問題,就是獲得位圖的像素位?開始,我以為BITMAP結構的bmBits就是存放像素位的,結果運?有問題還以為是我??沒有新加載?個位圖,在新位圖?存放新像素位,結果還是不?,調試時發(fā)現BITMAP的bmBits始終為0所以問題出在這,我們并沒有真正獲取到位圖的像素位,要獲取位圖的像素位,可以?GetBitmapBits函數,函數怎么?去查msdn或者百度相應的設置像素位?SetBitmapBits,下?就是Robert算?具體實現的核?代碼了最后實現效果:好了,?功告成,?定要注意,獲取設置位圖像素位,?BITMAP的bmBits成員是不?的,?GetBitmapBits和SetBitmapBits即可最后附上完整win32API代碼://VC++圖像處理程序//圖像的邊緣檢測-Robert算?//圖像的邊緣檢測-Robert算?#include<windows.h>#include<cmath>LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗?過程函數voidRobertOperator(HDChdc,HDChMemDc,HBITMAPhBitmap,intWidth,intHeight);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){TCHARszAppName[]=TEXT("Robert算?");//設計窗?類WNDCLASSwndclass;//窗?類wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗?背景畫刷(??)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;//注冊窗?類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;}//將原位圖選進內存DCHDChdc=GetDC(hwnd);hMemDc=CreateCompatibleDC(hdc);//內存DCSelectObject(hMemDc,hBitmap);ReleaseDC(hwnd,hdc);//計算位圖的寬和?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];//?成當前像素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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論