日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解

發(fā)布時(shí)間:2024/5/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? 本文主要講述基于VC++6.0 MFC圖像處理的應(yīng)用知識(shí),主要結(jié)合自己大三所學(xué)課程《數(shù)字圖像處理》及課件進(jìn)行講解,主要通過(guò)MFC單文檔視圖實(shí)現(xiàn)顯示BMP格式圖片,并通過(guò)Bitmap進(jìn)行灰度處理、圖片采樣和量化功能。
? ? ? ? 個(gè)人認(rèn)為對(duì)初學(xué)者VC++6.0可能還是很值得學(xué)習(xí)的工具,所以采用它來(lái)講解,而不是VS或C#。同時(shí)文章比較詳細(xì)基礎(chǔ),希望該篇文章對(duì)你有所幫助~
? ? ? ?【數(shù)字圖像處理】一.MFC詳解顯示BMP格式圖片
? ? ? ?【數(shù)字圖像處理】二.MFC單文檔分割窗口顯示圖片
? ? ? ??免費(fèi)資源下載地址:
? ? ? ??http://download.csdn.net/detail/eastmount/8748403

?

一. 單文檔顯示BMP圖片

? ? ? ? 第一步:新建項(xiàng)目"MFC AppWizard(exe)",項(xiàng)目名為ImageProcessing,在應(yīng)用程序類型中選擇"單個(gè)文檔",點(diǎn)擊"確定"。在左欄的"資源視圖"中,點(diǎn)擊"Menu->IDR_MAINFRAM"可以查看并修改菜單視圖。

第二步:向CImageProcessingView類添加成員變量和成員函數(shù)。在右欄的"類視圖"右鍵ImageProcessingView添加函數(shù)或直接在ImageProcessingView.h中直接添加public成員變量和成員函數(shù)。添加代碼如下: // Implementation public://添加成員函數(shù)void ShowBitmap(CDC* pDC,CString BmpName); //顯示位圖函數(shù)//添加成員變量CString EntName; //圖像文件擴(kuò)展名CString BmpName; //圖像文件名稱CBitmap m_bitmap; //創(chuàng)建位圖對(duì)象 ? ? ? ? 同時(shí)采用類視圖添加后,會(huì)自動(dòng)在XXXView.h中添加函數(shù)定義,在XXXView.cpp中添加函數(shù)實(shí)現(xiàn)代碼。

?

第三步:編輯ImageProcessingView.cpp中ShowBitmap()函數(shù)。通過(guò)它顯示BMP圖片,其中代碼及詳細(xì)注釋如下: //****************顯示BMP格式圖片****************// void CImageProcessingView::ShowBitmap(CDC *pDC, CString BmpName) {//定義bitmap指針 調(diào)用函數(shù)LoadImage裝載位圖HBITMAP m_hBitmap;m_hBitmap = (HBITMAP) LoadImage(NULL,BmpName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION);/*************************************************************************//* 1.要裝載OEM圖像,則設(shè)此參數(shù)值為0 OBM_ OEM位圖 OIC_OEM圖標(biāo) OCR_OEM光標(biāo)/* 2.BmpName要裝載圖片的文件名 /* 3.裝載圖像類型: /* IMAGE_BITMAP-裝載位圖 IMAGE_CURSOR-裝載光標(biāo) IMAGE_ICON-裝載圖標(biāo) /* 4.指定圖標(biāo)或光標(biāo)的像素寬度和長(zhǎng)度 以像素為單位 /* 5.加載選項(xiàng):/* IR_LOADFROMFILE-指明由lpszName指定文件中加載圖像/* IR_DEFAULTSIZE-指明使用圖像默認(rèn)大小/* LR_CREATEDIBSECTION-當(dāng)uType參數(shù)為IMAGE_BITMAP時(shí),創(chuàng)建一個(gè)DIB項(xiàng)/**************************************************************************/if( m_bitmap.m_hObject ){m_bitmap.Detach(); //切斷CWnd和窗口聯(lián)系}m_bitmap.Attach(m_hBitmap); //將句柄HBITMAP m_hBitmap與CBitmap m_bitmap關(guān)聯(lián)//邊界CRect rect;GetClientRect(&rect);//圖片顯示(x,y)起始坐標(biāo)int m_showX=0;int m_showY=0;int m_nWindowWidth = rect.right - rect.left; //計(jì)算客戶區(qū)寬度int m_nWindowHeight = rect.bottom - rect.top; //計(jì)算客戶區(qū)高度//定義并創(chuàng)建一個(gè)內(nèi)存設(shè)備環(huán)境DCCDC dcBmp;if( !dcBmp.CreateCompatibleDC(pDC) ) //創(chuàng)建兼容性的DCreturn;BITMAP m_bmp; //臨時(shí)bmp圖片變量m_bitmap.GetBitmap(&m_bmp); //將圖片載入位圖中CBitmap *pbmpOld = NULL; dcBmp.SelectObject(&m_bitmap); //將位圖選入臨時(shí)內(nèi)存設(shè)備環(huán)境//圖片顯示調(diào)用函數(shù)stretchBltpDC->StretchBlt(0,0,m_bmp.bmWidth,m_bmp.bmHeight,&dcBmp,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);/*******************************************************************************//* BOOL StretchBlt(int x,int y,int nWidth,int nHeight,CDC* pSrcDC, /* int xSrc,int ySrc,int nSrcWidth,int nSrcHeight,DWORD dwRop );/* 1.參數(shù)x、y位圖目標(biāo)矩形左上角x、y的坐標(biāo)值 /* 2.nWidth、nHeigth位圖目標(biāo)矩形的邏輯寬度和高度 /* 3.pSrcDC表示源設(shè)備CDC指針 /* 4.xSrc、ySrc表示位圖源矩形的左上角的x、y邏輯坐標(biāo)值 /* 5.dwRop表示顯示位圖的光柵操作方式 SRCCOPY用于直接將位圖復(fù)制到目標(biāo)環(huán)境中 /*******************************************************************************/dcBmp.SelectObject(pbmpOld); //恢復(fù)臨時(shí)DC的位圖DeleteObject(&m_bitmap); //刪除內(nèi)存中的位圖dcBmp.DeleteDC(); //刪除CreateCompatibleDC得到的圖片DC/*** 面代碼為后面顯示第二張圖片*/} ? ? ? ? 第四步:設(shè)置打開BMP圖片函數(shù)。"查看"->"建立類向?qū)?#34;(Ctrl+W)->選擇"類名"CImageProcessing->在命令對(duì)象ID中雙擊"ID_FILE_OPEN"->自動(dòng)生成默認(rèn)成員函數(shù)OnFileOpen,消息為COMMAND。雙擊成員函數(shù)(Member Functions)進(jìn)入函數(shù)編輯。

? ? ? ? 編輯ImageProcessingView.cpp函數(shù)實(shí)現(xiàn)打開圖片,代碼如下: //****************打開文件****************// void CImageProcessingView::OnFileOpen() {//兩種格式的文件:bmp gifCString filter; filter="所有文件(*.bmp,*.jpg,*.gif)|*.bmp;*.jpg| BMP(*.bmp)|*.bmp| JPG(*.jpg)|*.jpg||"; CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter,NULL); //按下確定按鈕 dlg.DoModal() 函數(shù)顯示對(duì)話框 if( dlg.DoModal() == IDOK ) { BmpName = dlg.GetPathName(); //獲取文件路徑名 如D:\pic\abc.bmp EntName = dlg.GetFileExt(); //獲取文件擴(kuò)展名 EntName.MakeLower(); //將文件擴(kuò)展名轉(zhuǎn)換為一個(gè)小寫字符 Invalidate(); //調(diào)用該函數(shù)就會(huì)調(diào)用OnDraw重繪畫圖 } } ? ? ? ? 第五步:在ImageProcessingView.cpp中找到OnDraw()函數(shù),通過(guò)OnDraw()函數(shù)調(diào)用ShowBitmap()函數(shù)顯示圖片。代碼如下: void CImageProcessingView::OnDraw(CDC* pDC) {CImageProcessingDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereif (!pDoc) return; if( EntName.Compare(_T("bmp")) == 0 ) //bmp格式 { ShowBitmap(pDC,BmpName); //顯示圖片 } } ? ? ? ? 第六步:此時(shí)點(diǎn)擊運(yùn)行,同時(shí)點(diǎn)擊文件-打開,即可顯示圖片如下圖所示:

PS:這是非常著名的一張圖片萊娜圖(Lenna),全圖是一張花花公子封面的裸圖,后成為數(shù)字圖像處理的標(biāo)志圖片。哈哈~至于BMP圖片格式參照第一篇文章

?

二. 讀取BMP圖片和保存圖片

BMP圖片格式如下圖所示:(參考自己文庫(kù))

在很多處理中,都需要獲取BMP圖像的一些數(shù)據(jù),如圖像寬度、高度、像素大小等,后面的處理與之相關(guān),主要的是ReadBmp函數(shù)。
? ? ? ?第一步:在XXXView.h中添加BMP格式圖像相關(guān)的成員變量和成員函數(shù),其中成員函數(shù)通過(guò)類視圖右鍵添加,成員變量可以在XXXView.h中直接復(fù)制。
? // Implementation public://添加成員函數(shù)void ShowBitmap(CDC* pDC,CString BmpName); //顯示位圖函數(shù)bool ReadBmp(); //用來(lái)讀取bmp個(gè)手機(jī)圖片bool SaveBmp(LPCSTR lpFileName); //用來(lái)保存bmp格式圖片//添加成員變量CString EntName; //圖像文件擴(kuò)展名CString BmpName; //圖像文件名稱CBitmap m_bitmap; //創(chuàng)建位圖對(duì)象int m_nWidth; //圖像實(shí)際寬度int m_nHeight; //圖像實(shí)際高度int m_nDrawWidth; //圖像顯示寬度int m_nDrawHeight; //圖像顯示高度DWORD m_nImage; //圖像數(shù)據(jù)的字節(jié)數(shù) 只含位圖DWORD m_nSize; //圖像文件大小int m_nLineByte; //圖像一行所占字節(jié)數(shù)int m_nBitCount; //圖像每個(gè)像素所占位數(shù)int m_nPalette; //位圖實(shí)際使用的顏色表中的顏色數(shù)BYTE *m_pImage; //讀入圖片數(shù)據(jù)后的指針BITMAPFILEHEADER bfh; //全局變量文件頭BITMAPINFOHEADER bih; //全局變量信息頭RGBQUAD m_pPal; //顏色表指針 ? ? ? ? 第二步:在ImageProcessingView.cpp中實(shí)現(xiàn)ReadBmp函數(shù)和SaveBmp函數(shù)。
? //***************讀取圖片數(shù)據(jù)*************// bool CImageProcessingView::ReadBmp() {//圖片讀出存儲(chǔ)其中的東西FILE *fp = fopen(BmpName,"rb");if(fp==0){ AfxMessageBox("無(wú)法打開文件!",MB_OK,0);return 0; }//讀取文件頭 解決BMP格式倒置的方法fread(&bfh.bfType,sizeof(WORD),1,fp);fread(&bfh.bfSize,sizeof(DWORD),1,fp);fread(&bfh.bfReserved1,sizeof(WORD),1,fp);fread(&bfh.bfReserved2,sizeof(WORD),1,fp);fread(&bfh.bfOffBits,sizeof(DWORD),1,fp);//圖像文件的總字節(jié)數(shù)m_nSize = bfh.bfSize;//判斷是否是bmp格式圖片if(bfh.bfType!=0x4d42) //'BM'{AfxMessageBox("不是BMP格式圖片!",MB_OK,0);return 0;}//讀取信息頭fread(&bih.biSize,sizeof(DWORD),1,fp);fread(&bih.biWidth,sizeof(LONG),1,fp);fread(&bih.biHeight,sizeof(LONG),1,fp);fread(&bih.biPlanes,sizeof(WORD),1,fp);fread(&bih.biBitCount,sizeof(WORD),1,fp);fread(&bih.biCompression,sizeof(DWORD),1,fp);fread(&bih.biSizeImage,sizeof(DWORD),1,fp);fread(&bih.biXPelsPerMeter,sizeof(LONG),1,fp);fread(&bih.biYPelsPerMeter,sizeof(LONG),1,fp);fread(&bih.biClrUsed,sizeof(DWORD),1,fp);fread(&bih.biClrImportant,sizeof(DWORD),1,fp);if(bih.biSize!=sizeof(bih)){AfxMessageBox("本結(jié)構(gòu)所占用字節(jié)數(shù)出現(xiàn)錯(cuò)誤");return 0;}//位圖壓縮類型,必須是 0(不壓縮) 1(BI_RLE8壓縮類型)或2(BI_RLE壓縮類型)之一if(bih.biCompression == BI_RLE8 || bih.biCompression == BI_RLE4){AfxMessageBox("位圖被壓縮!");return 0;}//獲取圖像高寬和每個(gè)像素所占位數(shù)m_nHeight = bih.biHeight;m_nWidth = bih.biWidth;m_nDrawHeight = bih.biHeight;m_nDrawWidth = bih.biWidth;m_nBitCount = bih.biBitCount; //每個(gè)像素所占位數(shù)//計(jì)算圖像每行像素所占的字節(jié)數(shù)(必須是32的倍數(shù))m_nLineByte = (m_nWidth*m_nBitCount+31)/32*4;//圖片大小 調(diào)用系統(tǒng)自帶的文件頭 BITMAPFILEHEADER bfh; BITMAPINFOHEADER bih; //否則用 BITMAPFILEHEADER_ bfh; BITMAPINFOHEADER_ bih;要 m_nImage = m_nLineByte * m_nHeight - 2;m_nImage = m_nLineByte * m_nHeight;//位圖實(shí)際使用的顏色表中的顏色數(shù) biClrUsedm_nPalette = 0; //初始化if(bih.biClrUsed)m_nPalette = bih.biClrUsed;//申請(qǐng)位圖空間 大小為位圖大小 m_nImage//malloc只能申請(qǐng)4字節(jié)的空間 (未知)m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fp);fclose(fp);return true; } ? ? ? ?其中SaveBmp()函數(shù)代碼如下: //****************保存文件****************// bool CImageProcessingView::SaveBmp(LPCSTR lpFileName) //lpFileName為位圖文件名 {//保存bmp格式圖片 寫圖片過(guò)程 只處理24像素的圖片 該圖片無(wú)調(diào)色板FILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(lpFileName,"wb");fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);//malloc只能申請(qǐng)4字節(jié)的空間 (未知)m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fpo);fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);return true; } ? ? ? ? 第三步:添加保存menu控件和函數(shù)。點(diǎn)擊”查看-建立類向?qū)А?#xff0c;在ID列表中找到ID_FILE_SAVE,點(diǎn)擊COMMAND(Message列表),雙擊添加默認(rèn)成員函數(shù)OnFileSave,同時(shí)在Member Functions(成員函數(shù))中雙擊該函數(shù)進(jìn)入函數(shù)并編輯。添加如下代碼:
? //******************文件保存*****************// void CImageProcessingView::OnFileSave() {// TODO: Add your command handler code hereCString filter;filter="所有文件(*.bmp,*.jpg)|*.bmp;*.jpg| BMP(*.bmp)|*.bmp| JPG(*.jpg)|*.jpg||";//重點(diǎn): 1-文件打開 0-文件保存CFileDialog dlg(0,NULL,NULL,OFN_HIDEREADONLY,filter,NULL); //按下確定按鈕if( dlg.DoModal() == IDOK ) {CString str;CString strName;CString filename;str = dlg.GetPathName(); //獲取文件的路徑filename = dlg.GetFileTitle(); //獲取文件名int nFilterIndex=dlg.m_ofn.nFilterIndex;if( nFilterIndex == 2 ) //當(dāng)用戶選擇文件過(guò)濾器為".BMP"時(shí){str = str + ".bmp"; //自動(dòng)加擴(kuò)展名.bmpSaveBmp(str); //保存bmp圖片 就是一個(gè)寫出圖片的過(guò)程 AfxMessageBox("圖片保存成功",MB_OK,0);}} } ? ? ? ? 第四步:在XXXView.cpp中OnDraw()函數(shù)中調(diào)用讀取圖片函數(shù)。
? ? ? ?if( EntName.Compare(_T("bmp")) == 0 ) ? ? ?//bmp格式 ?
? ? ? ? { ?

? ? ? ? ? ? ? ? ReadBmp();
? ? ? ? ? ? ? ? ShowBitmap(pDC,BmpName); ? ? ? ? ? ? ? //顯示圖片 ?
? ? ? ? } ?
? ? ? ? 運(yùn)行程序,打開圖片點(diǎn)擊保存即可實(shí)現(xiàn)。重點(diǎn)是ReadBmp獲取一些重要參數(shù)。

?

三. 圖像灰度處理

(參考我的百度文庫(kù):http://wenku.baidu.com/view/3b869230f111f18583d05a43)
?

1.灰度圖像概念

? ? ? ? 什么叫灰度圖?任何顏色都有紅、綠、藍(lán)三原色組成,假如原來(lái)某點(diǎn)的顏色為RGB(R,G,B),那么我們可以通過(guò)下面幾種方法,將其轉(zhuǎn)換為灰度:
? ? ? ? 浮點(diǎn)算法:Gray=R*0.3+G*0.59+B*0.11
? ? ? ? 整數(shù)方法:Gray=(R*30+G*59+B*11)/100
? ? ? ? 移位方法:Gray=(R*28+G*151+B*77)>>8;
? ? ? ? 平均值法:Gray=(R+G+B)/3;(此程序采用算法)

? ? ? ? 僅取綠色:Gray=G;
? ? ? ? 通過(guò)上述任一種方法求得Gray后,將原來(lái)的RGB(R,G,B)中的R,G,B統(tǒng)一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來(lái)的RGB(R,G,B)就是灰度圖了。
? ? ? ? 改變象素矩陣的RGB值,來(lái)達(dá)到彩色圖轉(zhuǎn)變?yōu)榛叶葓D
? ? ? ? 加權(quán)平均值算法:根據(jù)光的亮度特性,其實(shí)正確的灰度公式應(yīng)當(dāng)是:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?R=G=B=R*0.299+G*0.587+B0.144
? ? ? ??為了提高速度我們做一個(gè)完全可以接受的近似,公式變形如下:R=G=B=(R*3+G*6+B)/10?
? ? ? ? 真正的24位真彩圖與8位的灰度圖的區(qū)別就在于,真彩圖文件中沒(méi)有調(diào)色板,灰度圖有調(diào)色板,真彩圖中的象素矩陣是RGB值,灰度圖中的象素矩陣是調(diào)色板索引值。源代碼只簡(jiǎn)單的改變象素矩陣的RGB值,來(lái)達(dá)到彩色圖轉(zhuǎn)為灰度圖,并沒(méi)有添加調(diào)色板;該程序未實(shí)現(xiàn)添加了調(diào)色板。
?

2.灰度處理源碼

第一步:在前面的代碼基礎(chǔ)上繼續(xù),先在ImageProcessingView.h中添加成員變量m_bitmaplin和BmpNameLin,因?yàn)楹竺嫣幚聿僮魇翘幚韨浞菸募c原圖進(jìn)行比較。
? // Implementation public://添加成員函數(shù)void ShowBitmap(CDC* pDC,CString BmpName); //顯示位圖函數(shù)bool ReadBmp(); ? ? ? ? ? ? ? ? ? //用來(lái)讀取bmp個(gè)手機(jī)圖片bool SaveBmp(LPCSTR lpFileName); ? ? ? //用來(lái)保存bmp格式圖片//添加成員變量CString EntName; //圖像文件擴(kuò)展名CString BmpName; //圖像文件名稱CBitmap m_bitmap; //創(chuàng)建位圖對(duì)象CBitmap m_bitmaplin; //創(chuàng)建臨時(shí)位圖對(duì)象進(jìn)行處理CString BmpNameLin; //保存圖像副本文件 ? ? ? ? 第二步:在ImageProcessingView.cpp中ShowBitmap()函數(shù)前添加變量numPicture和level。
? /*************************************************************/ /* numPicture變量顯示圖片數(shù)量 /* 0-提示錯(cuò)誤或未打開圖片 1-顯示一張圖片 2-顯示兩張圖片和處理 /*************************************************************/ int numPicture = 0;/*************************************************************/ /* level變量顯示具體的處理操作,每個(gè)處理函數(shù)中賦值該變量 /* 0-顯示2張圖片 1-顯示灰度圖片 3-顯示圖片采樣 /* 2 4 8 16 32 64-不同量化等級(jí)量化圖片 /*************************************************************/ int level = 0; //****************顯示BMP格式圖片****************// void CImageProcessingView::ShowBitmap(CDC *pDC, CString BmpName) {.... } ? ? ? ? 第三步:修改ImageProcessingView.cpp中OnFileOpen()函數(shù),添加臨時(shí)變量名和顯示一張圖片標(biāo)志變量。代碼如下:
? //****************打開文件****************// void CImageProcessingView::OnFileOpen() {CString filter; filter="所有文件(*.bmp,*.jpg,*.gif)|*.bmp;*.jpg| BMP(*.bmp)|*.bmp| JPG(*.jpg)|*.jpg||"; CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter,NULL); if( dlg.DoModal() == IDOK ) { BmpName = dlg.GetPathName(); BmpNameLin = "picture.bmp"; //臨時(shí)變量名numPicture=1; //顯示一張圖片EntName = dlg.GetFileExt(); EntName.MakeLower(); Invalidate(); } } ? ? ? ? 第四步:將視圖切換到ResourceView界面,選中Menu->在IDR_MAINFRAME中添加菜單”顯示“,雙擊它在菜單屬性中選擇”彈出“。在”顯示“的子菜單中添加:
? ? ? ? 雙圖顯示--ID_SHOW_TWO(ID)--默認(rèn)屬性
? ? ? ? 灰度圖片--ID_SHOW_HD(ID)--默認(rèn)屬性

第五步:點(diǎn)擊"查看"->"建立類向?qū)?#34;(Ctrl+W),選擇CImageProcessing類,然后ID_SHOW_TWO,雙擊COMMAND(Message),生成默認(rèn)成員函數(shù)。
?

在XXXView.cpp中實(shí)現(xiàn)OnShowTwo()函數(shù),代碼如下: //****************顯示兩張圖片****************// void CImageProcessingView::OnShowTwo() {//如果沒(méi)有導(dǎo)入圖片直接點(diǎn)擊雙顯 提示錯(cuò)誤if(numPicture==0){AfxMessageBox("載入圖片后才能顯示2張圖片!");return;}AfxMessageBox("顯示兩張圖片!",MB_OK,0);numPicture = 2; //全局變量 顯示兩圖level =0; //level=0雙顯Invalidate(); //調(diào)用Invalidate 每秒調(diào)用一次OnDraw畫圖 } ? ? ? ? 第六步:同上面相同的方法,"查看"->”建立類向?qū)А?>ID_SHOW_HD(ID)->COMMAND(Message),默認(rèn)成員函數(shù)名。在XXXView.cpp添加代碼如下: /********************************************************************************************/ /* 祥見(jiàn)http://blog.csdn.net/xiakq/article/details/2956902有詳細(xì)的灰度算法 /* 其中24位的圖片灰度時(shí),采用如下算法: /* 1.平均值算法 R=G=B=(R+G+B)/3 /* 2.快速算法 R=G=B=(R+G+B+128)/4>>2 /* 3.加權(quán)平均值算法 根據(jù)光的亮度特性,其實(shí)正確的灰度公式應(yīng)當(dāng)是R=G=B=R*0.299+G*0.587+B0.144 /* 為了提高速度我們做一個(gè)完全可以接受的近似,公式變形如下 R=G=B=(R*3+G*6+B)/10 /* 4.精確加權(quán)平均值算法 R=G=B=R*0.299+G*0.587+B0.144 /********************************************************************************************///**灰度圖像就是 R=G=B且為三者的1/3 level=1時(shí)灰度圖像**// void CImageProcessingView::OnShowHd() {if(numPicture==0){AfxMessageBox("載入圖片后才能灰度圖片!",MB_OK,0);return;}AfxMessageBox("灰度圖像!",MB_OK,0);//打開臨時(shí)的圖片F(xiàn)ILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");//讀取文件fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);//灰度圖像unsigned char color;unsigned char red,green,blue;/********************************************************************//* 注意:原來(lái)下面所有操作都是for( i=0; i<m_nWidth*m_nHeight; i++ ) /* 后發(fā)現(xiàn)如果圖片最后一行沒(méi)有完整的一行數(shù)據(jù),會(huì)出現(xiàn)圖像變多或變少 /* 但圖像的總像素為m_nImage,如果是m_nImage/3就可以保證所有像素都有 /********************************************************************/for(int i=0; i < m_nImage/3; i++ ){fread(&red,sizeof(char),1,fpo);fread(&green,sizeof(char),1,fpo);fread(&blue,sizeof(char),1,fpo);color=(red+green+blue)/3;red=color;green=color; blue=color;fwrite(&red,sizeof(char),1,fpw);fwrite(&green,sizeof(char),1,fpw);fwrite(&blue,sizeof(char),1,fpw);}fclose(fpo);fclose(fpw);numPicture = 2;level=1;Invalidate(); } ? ? ? ? 第七步:修改ShowBitmap()函數(shù)中雙顯部分,添加如下代碼:
? //****************顯示BMP格式圖片****************// void CImageProcessingView::ShowBitmap(CDC *pDC, CString BmpName) {..../*** 面代碼為后面顯示第二張圖片*/if(numPicture==2) {//顯示圖片函數(shù)LoadImageHBITMAP m_hBitmapChange;if(level==0) //顯示2張圖 BmpNameLin原圖{m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION);}elseif(level==1) //灰度圖片 BmpNameLin臨時(shí)圖片{m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION);}if( m_bitmap.m_hObject ) {m_bitmap.Detach(); //m_bitmap為創(chuàng)建的位圖對(duì)象}m_bitmap.Attach(m_hBitmapChange);//定義并創(chuàng)建一個(gè)內(nèi)存設(shè)備環(huán)境CDC dcBmp;if( !dcBmp.CreateCompatibleDC(pDC) ) //創(chuàng)建兼容性的DCreturn;BITMAP m_bmp; //臨時(shí)bmp圖片變量m_bitmap.GetBitmap(&m_bmp); //將圖片載入位圖中CBitmap *pbmpOld = NULL;dcBmp.SelectObject(&m_bitmap); //將位圖選入臨時(shí)內(nèi)存設(shè)備環(huán)境//如果圖片太大顯示大小為固定640*640 否則顯示原圖大小if(m_nDrawWidth<650 && m_nDrawHeight<650)pDC->StretchBlt(m_nWindowWidth-m_nDrawWidth,0,m_nDrawWidth,m_nDrawHeight,&dcBmp,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);elsepDC->StretchBlt(m_nWindowWidth-640,0,640,640,&dcBmp,0,0,m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY); //恢復(fù)臨時(shí)DC的位圖dcBmp.SelectObject(pbmpOld); }} ? ? ? ? 雙顯和灰度運(yùn)行效果如下圖所示:


?

四. 圖片量化處理

(參考我的文庫(kù):http://wenku.baidu.com/view/80b18961f5335a8102d220a0)

1.量化基本概念

? ? ? ? 圖像數(shù)字化包括量化和取樣兩個(gè)過(guò)程,其中:
? ? ? ? 量化:幅值f(x,y)的離散化,f(x,y)表示靜止灰度圖像的空間坐標(biāo)
? ? ? ? 取樣:對(duì)空間連續(xù)坐標(biāo)(x,y)的離散化

? ? ? ??一幅行數(shù)為M、列數(shù)為N的圖像大小為M×N的矩陣形式為:(其中矩陣中每個(gè)元素代表一個(gè)像素)

? ? ? ? 該工程所有的處理都基于24位的bmp格式圖片的處理,24為表示biBitCount=24,1個(gè)像素占3個(gè)字節(jié)(red、green、blue)。

? ? ? ? 如圖量化級(jí)不同產(chǎn)生的灰度也不同,量化是使連續(xù)信號(hào)的幅度用有限級(jí)的數(shù)碼表示的過(guò)程。
? ? ? ? 量化等級(jí)=2:使用2種灰度級(jí)(0~255)表示圖片,小于128的取0,大于等于128的取128。把位圖數(shù)據(jù)塊所有數(shù)據(jù)在臨時(shí)圖片中取值,在顯示即可。
? ? ? ? 量化等級(jí)=4:使用4種灰度級(jí)顯示圖片,就會(huì)發(fā)現(xiàn)圖片分層為4種顏色。同時(shí),0-64區(qū)間取0,64-128區(qū)間取64,128-192區(qū)間取128,192-255區(qū)間取192。
? ? ? ? 量化的取值各不相同,我采用的是最簡(jiǎn)單的取值。其它方法可自己去查閱資料。

?

?

2.量化處理源碼

? ? ? ? 第一步:設(shè)置菜單欄。將試圖切換到ResourceView界面--選中Menu--在IDR_MAINFRAME中添加菜單“量化”--雙擊它在菜單屬性中選擇“彈出”。在“顯示”的子菜單中添加:屬性為默認(rèn)屬性。
? ? ? ? 量化 Level 2--ID_LH_2 ? ? ? 量化 Level 4--ID_LH_4
? ? ? ? 量化 Level 8--ID_LH_8 ? ? ? 量化 Level 16--ID_LH_16
? ? ? ? 量化 Level 32--ID_LH_32?? 量化 Level 64--ID_LH_64

第二步:建立類向?qū)А2榭?>建立類導(dǎo)向(Ctrl+W)->CXXXView(類名)->ID_LH_2->COMMAND(Messages)->默認(rèn)成員函數(shù)名。相同方法分別為量化等級(jí)2、4、8、16、32、64建立類導(dǎo)向。

第三步:在ImageProcessingView.cpp中編輯灰度函數(shù)。代碼如下:
? ? ? ? 核心流程是打開兩張圖片原圖(BmpName)和臨時(shí)圖片(BmpNameLin),然后讀取原圖信息頭賦值給臨時(shí)處理圖片,在讀取原圖m_nImage整個(gè)像素矩陣,量化處理每個(gè)像素(即分等級(jí)量化),最后文件寫量化后的像素矩陣給BmpNameLin,在賦值全局變量level\numPicture和調(diào)用Invalidate()重繪圖像即可。
? //****************量化 量化等級(jí)為2****************// void CImageProcessingView::OnLh2() {if(numPicture==0) {AfxMessageBox("載入圖片后才能量化!",MB_OK,0);return;}AfxMessageBox("量化等級(jí)Level=2!",MB_OK,0);//打開臨時(shí)的圖片F(xiàn)ILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");//讀取文件fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);//malloc只能申請(qǐng)4字節(jié)的空間m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fpo);//等級(jí)2量化for(int i=0; i<m_nImage; i++ ) {//24位的為調(diào)色板為真彩圖 Red Green Blue 為3字節(jié) //量化等級(jí)為2取中間值為 64 和 192if(m_pImage[i]<128) { m_pImage[i]=0;}else if(m_pImage[i]>=128) {m_pImage[i]=128;}}fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);numPicture = 2;level=2;Invalidate(); }//****************量化 量化等級(jí)為4****************// void CImageProcessingView::OnLh4() {if(numPicture==0) {AfxMessageBox("載入圖片后才能量化!",MB_OK,0);return;}AfxMessageBox("量化等級(jí)Level=4!",MB_OK,0);//打開臨時(shí)的圖片F(xiàn)ILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fpo);//等級(jí)4量化for(int i=0; i<m_nImage; i++ ) {if(m_pImage[i]<64) {m_pImage[i]=0;}else if( (m_pImage[i]>=64) && (m_pImage[i]<128) ) {m_pImage[i]=64;}else if( (m_pImage[i]>=128) && (m_pImage[i]<192) ) {m_pImage[i]=128;}else if(m_pImage[i]>=192) {m_pImage[i]=192;}}fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);numPicture = 2;level=4;Invalidate(); }//****************量化 量化等級(jí)為8****************// void CImageProcessingView::OnLh8() {if(numPicture==0) {AfxMessageBox("載入圖片后才能量化!",MB_OK,0);return;}AfxMessageBox("量化等級(jí)Level=8!",MB_OK,0);//打開臨時(shí)的圖片 讀取文件FILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);//malloc只能申請(qǐng)4字節(jié)的空間 (未知)m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fpo);//等級(jí)8量化for(int i=0; i<m_nImage; i++ ) {if(m_pImage[i]<32) {m_pImage[i]=0;}else if( (m_pImage[i]>=32) && (m_pImage[i]<64) ) {m_pImage[i]=32;}else if( (m_pImage[i]>=64) && (m_pImage[i]<96) ) {m_pImage[i]=64;}else if( (m_pImage[i]>=96) && (m_pImage[i]<128) ) {m_pImage[i]=96;}else if( (m_pImage[i]>=128) && (m_pImage[i]<160) ) {m_pImage[i]=128;}else if( (m_pImage[i]>=160) && (m_pImage[i]<192) ) {m_pImage[i]=160;}else if( (m_pImage[i]>=192) && (m_pImage[i]<224) ) {m_pImage[i]=192;}else if(m_pImage[i]>=224) {m_pImage[i]=224;}}fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);numPicture = 2;level=8;Invalidate(); }//****************量化 量化等級(jí)為16****************// void CImageProcessingView::OnLh16() {if(numPicture==0) {AfxMessageBox("載入圖片后才能量化!",MB_OK,0);return;}AfxMessageBox("量化等級(jí)Level=16!",MB_OK,0);int i,j;//打開臨時(shí)的圖片F(xiàn)ILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fpo);for( i=0; i<m_nImage; i++ ) {j=16;while(j<=256){if(m_pImage[i]<j) {if(m_pImage[i]<16) m_pImage[i]=0;else m_pImage[i]=j-16;break;}else j+=16;}}fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);numPicture = 2;level=16;Invalidate(); }//****************量化 量化等級(jí)為32****************// void CImageProcessingView::OnLh32() {if(numPicture==0) {AfxMessageBox("載入圖片后才能量化!",MB_OK,0);return;}AfxMessageBox("量化等級(jí)Level=32!",MB_OK,0);int i,j;//打開臨時(shí)的圖片F(xiàn)ILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");//讀取文件fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fpo);//等級(jí)32化for( i=0; i<m_nImage; i++ ){j=8;while(j<=256){if(m_pImage[i]<j) {if(m_pImage[i]<8) m_pImage[i]=0;else m_pImage[i]=j-8;break;}else j+=8;}}fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);numPicture = 2;level=32;Invalidate(); }//****************量化 量化等級(jí)為64****************// void CImageProcessingView::OnLh64() {if(numPicture==0) {AfxMessageBox("載入圖片后才能量化!",MB_OK,0);return;}AfxMessageBox("量化等級(jí)Level=64!",MB_OK,0);int i,j;//打開臨時(shí)的圖片F(xiàn)ILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");//讀取文件fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);m_pImage=(BYTE*)malloc(m_nImage);fread(m_pImage,m_nImage,1,fpo);//等級(jí)64量化for( i=0; i<m_nImage; i++ ){j=4;while(j<=256){if(m_pImage[i]<j) {if(m_pImage[i]<16) m_pImage[i]=0;else m_pImage[i]=j-4;break;}else j+=4;}}fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);numPicture = 2;level=64;Invalidate(); } ? ? ? ? 第四步:修改ShowBitmap()函數(shù),顯示量化處理。添加如下代碼:
? if(level==0) //顯示2張圖 BmpNameLin原圖 {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } else if(level==1) //灰度圖片 BmpNameLin臨時(shí)圖片 {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } else //量化2 if(level==2) {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } else //量化4 if(level==4) {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } else //量化8 if(level==8) {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } else //量化16 if(level==16) {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } else //量化32 if(level==32) {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } else //量化64 if(level==64) {m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); } ? ? ? ? 運(yùn)行效果如下圖,當(dāng)量化Level=2時(shí)很明顯的兩種灰度顏色,Level=4有4種顏色。

?

五. 圖像采樣功能

(參考我的文庫(kù):http://wenku.baidu.com/view/b3ef4e1f964bcf84b9d57baf)

1.圖像采樣概念

? ? ? ? 該工程所有的處理都基于24位的bmp格式圖片的處理,24為表示biBitCount=24,1個(gè)像素占3個(gè)字節(jié)(red、green、blue)。如圖一張512*512的原圖,保持灰度級(jí)256不變后的各種采樣。輸入采樣坐標(biāo):如16*16,它的含義是原圖512*512像素,現(xiàn)在組成一個(gè)新的圖片為16*16像素,(512/16=32,512/16=32)則每32*32組成一個(gè)新的區(qū)域。共有這種區(qū)域16*16個(gè),采樣的方法有2種:
? ? ? ? a.把這個(gè)32*32區(qū)域全部賦值成左上角那個(gè)像素,這樣圖片的大小不變,困難在于賦值要4層循環(huán)。(項(xiàng)目中采用的就是這種方法)
? ? ? ? b.把這個(gè)32*32區(qū)域的左上角取出來(lái),組成一個(gè)新的圖片,共有16*16個(gè)像素,這張圖片的大小要變小,只有16*16個(gè)像素。但難點(diǎn)在于同時(shí)要把bmp文件頭中的圖片大小、信息頭中的長(zhǎng)寬像素改變、偏移量等信息更新。

又如下圖所示:
? ? ? ? 原圖8*8的矩陣要處理成3*3的矩陣,則循環(huán)先處理第一二行,①②④⑤為3*3處理,去左上角的RGB,③⑥為2*3的處理;重點(diǎn)是原圖讀取一維數(shù)組需要轉(zhuǎn)成二維數(shù)組賦值處理;最后再處理最后一行數(shù)據(jù)。采樣中公式為:
? ? ? ? //獲取填充顏色 相當(dāng)于一次讀取一個(gè)像素的RGB值再乘3跳3個(gè)字節(jié)
? ? ? ? red=m_pImage[(X+Y*m_nWidth)*3];
? ? ? ? green=m_pImage[(X+Y*m_nWidth)*3+1];
? ? ? ? blue=m_pImage[(X+Y*m_nWidth)*3+2];
? ? ? ? //填出圖像循環(huán) 小區(qū)域中的長(zhǎng)寬循環(huán)
? ? ? ? //(X+Y*m_nWidth)*3跳到該小區(qū)域 再賦值3*3小區(qū)域的RGB 同一區(qū)域RGB相同
? ? ? ? m_pImage[(X+Y*m_nWidth)*3+m+n*m_nWidth*3]=red;?m++;
? ? ? ? m_pImage[(X+Y*m_nWidth)*3+m+n*m_nWidth*3]=green;?m++;
? ? ? ? m_pImage[(X+Y*m_nWidth)*3+m+n*m_nWidth*3]=blue;?m++;

PS:難點(diǎn)是還未處理剩余部分的采樣。

?

2.圖像采樣代碼

第一步:設(shè)置菜單欄
? ? ? ? a.將視圖切換到ResourceView界面--選中Menu--在IDR_MAINFRAME中添加菜單“采樣”--雙擊它在菜單屬性中選擇“彈出”;
? ? ? ? b.在“采樣”的子菜單中添加:屬性為默認(rèn)屬性。ID_CY--圖片采樣。
? ? ? ? c.建立類導(dǎo)向:查看--建立類導(dǎo)向(Ctrl+W)--CImageProcessingView(類名)--ID_CY--COMMAND(Messages)--默認(rèn)成員函數(shù)名。生成void CImageProcessingView::OnCy()采樣函數(shù)。
? ? ? ? 第二步:設(shè)置采樣對(duì)話框
? ? ? ? a.將試圖切換到ResourceView界面--選中Dialog,右鍵鼠標(biāo)新建一個(gè)Dialog,并新建一個(gè)名為IDD_DIALOG_CY。編輯框(X)IDC_EDIT_CYX 和 (Y)IDC_EDIT_CYY,確定為默認(rèn)按鈕。設(shè)置成下圖對(duì)話框:

b.在對(duì)話框資源模板空白區(qū)域雙擊鼠標(biāo)—Create a new class創(chuàng)建一個(gè)新類--命名為CImageCYDlg。會(huì)自動(dòng)生成它的.h和.cpp文件。類向?qū)trl W--類名:CImageCYDlg--CImageCYDlg(IDs)—WM_INITDLAOG建立這個(gè)函數(shù)可以用于初始化。

?

c.打開類向?qū)trl+W--選擇MemberVariables頁(yè)面,類名:CImageCYDlg--Add Variables--設(shè)置成: IDC_EDIT_CYX--int--m_xPlace
? ? ? ? ? ? ? ? IDC_EDIT_CYY--int--m_yPlace
? ? ? ? d.在View.cpp中添加采樣的頭文件#include "ImageCYDlg.h"

? ? ? ? 第三步:在ImageProcessingView.cpp中添加代碼

//****************圖片采樣****************// void CImageProcessingView::OnCy() {if(numPicture==0) {AfxMessageBox("載入圖片后才能采樣!",MB_OK,0);return;}CImageCYDlg dlg; //定義采樣對(duì)話框//顯示對(duì)話框if( dlg.DoModal()==IDOK ) {//采樣坐標(biāo)最初為圖片的自身像素if( dlg.m_xPlace==0 || dlg.m_yPlace==0 ) {AfxMessageBox("輸入圖片像素不能為0!",MB_OK,0);return;}if( dlg.m_xPlace>m_nWidth || dlg.m_yPlace>m_nHeight ) {AfxMessageBox("圖片像素不能為超過(guò)原圖長(zhǎng)寬!",MB_OK,0);return;}AfxMessageBox("圖片采樣!",MB_OK,0);//打開臨時(shí)的圖片 讀取文件FILE *fpo = fopen(BmpName,"rb");FILE *fpw = fopen(BmpNameLin,"wb+");fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);fread(m_pImage,m_nImage,1,fpo);/*圖片采樣*/int numWidth,numHeight; //圖片此區(qū)間取相同的像素點(diǎn)int numSYWidth,numSYHeight; //剩余期間區(qū)域 /*********************************************************//* 表示numWidth*numHeight為一個(gè)區(qū)域 該區(qū)域顏色相同 /* 如 512/512=1 512/512=1 1*1為一個(gè)區(qū)域 /* dlg.m_xPlace*dlg.m_yPlace 表示新的(x,y)坐標(biāo) /* numSYWidth表示剩余空間 該區(qū)域統(tǒng)一為一個(gè)顏色 /*********************************************************/numWidth=m_nWidth/dlg.m_xPlace; numHeight=m_nHeight/dlg.m_yPlace; numSYWidth=m_nWidth%dlg.m_xPlace; numSYHeight=m_nHeight%dlg.m_yPlace; int Y,X;int i,j,m,n;unsigned char red,green,blue; //存儲(chǔ)三種顏色/* 有((m_xPlace * m_yPlace)+ 剩余區(qū)域 )個(gè)小區(qū)域 */for( i=0; i<dlg.m_yPlace; i++ ) //高度{Y=numHeight*i; //獲取Y坐標(biāo)for( j=0; j<dlg.m_yPlace; j++ ) //寬度{X=numWidth*j; //獲取X坐標(biāo)/*獲取填充顏色*/red=m_pImage[(X+Y*m_nWidth)*3];green=m_pImage[(X+Y*m_nWidth)*3+1];blue=m_pImage[(X+Y*m_nWidth)*3+2];/*填出圖像循環(huán) 小區(qū)域中的長(zhǎng)寬循環(huán)*/for( n=0; n<numHeight; n++ ){for( m=0; m<numWidth*3; ){m_pImage[(X+Y*m_nWidth)*3+m+n*m_nWidth*3]=red;m++;m_pImage[(X+Y*m_nWidth)*3+m+n*m_nWidth*3]=green;m++;m_pImage[(X+Y*m_nWidth)*3+m+n*m_nWidth*3]=blue;m++;}}}}fwrite(m_pImage,m_nImage,1,fpw);fclose(fpo);fclose(fpw);numPicture = 2;level=3;Invalidate();} } 第四步:修改ShowBitmap(CDC* pDC,CString BmpName)中的代碼: else if(level==3) //圖片采樣 { m_hBitmapChange = (HBITMAP) LoadImage(NULL,BmpNameLin,IMAGE_BITMAP,0,0, LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION); ? ? ? ? }
? ? ? ? 運(yùn)行效果如下圖所示,其中彩色圖片應(yīng)該先灰度處理再進(jìn)行其他操作。

?

?


? ? ? ? 總結(jié):后悔當(dāng)初還沒(méi)有寫博客,通過(guò)回憶幾年前的代碼,很多當(dāng)時(shí)的體會(huì)和思想都已不復(fù)存在了!可能你在百度文庫(kù)中看到類似的文章,因?yàn)槟切┒际俏以?012年上傳的,最初是通過(guò)它進(jìn)行分享編程知識(shí)的,后來(lái)發(fā)現(xiàn)了更好的CSDN而取代之。這篇文章感覺(jué)太詳細(xì),有時(shí)候一直懷疑是不是失去了算法的本質(zhì),不應(yīng)該寫這么詳細(xì)的文章,而更加精簡(jiǎn)一點(diǎn),但可能和從小記筆記有關(guān),很難改過(guò)來(lái)了,慢慢改吧!
? ? ? ? 最后還是希望文章對(duì)你有所幫助,如果文章有不足或錯(cuò)誤之處,請(qǐng)海涵~
? ? ? (By:Eastmount 2015-5-28 下午點(diǎn) ??http://blog.csdn.net/eastmount/
? ? ? ??

?

總結(jié)

以上是生活随笔為你收集整理的【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久综合影视 | 依人成人综合网 | www.天天操 | 亚洲精品高清在线观看 | 一级黄色毛片 | 亚洲一区二区精品视频 | 免费在线观看成人 | 亚洲美女久久 | 伊人婷婷在线 | 久操综合| 色视频在线 | 国产在线专区 | 日韩网站在线播放 | 精品国产电影一区 | 在线观看视频国产 | 久久九九精品 | 成人午夜电影网站 | 久香蕉| 日日夜夜精品视频天天综合网 | 99久久99久久精品免费 | 中文字幕亚洲欧美 | 欧美日韩中文在线视频 | 九九在线国产视频 | 日韩av电影免费观看 | 日韩免费中文 | 91插插插网站 | 欧美伊人网 | 91丨九色丨蝌蚪丰满 | 一级做a爱片性色毛片www | 成人h在线 | 天天操天天舔天天爽 | 亚洲国产中文字幕在线 | 久久看免费视频 | 97av在线视频免费播放 | 日本精品一区二区在线观看 | 9797在线看片亚洲精品 | 亚洲精品理论片 | 中文字幕在线日本 | 干干日日| 久久dvd| 97超碰在线资源 | 麻豆免费观看视频 | 九九欧美视频 | 极品嫩模被强到高潮呻吟91 | 99色| 中文字幕视频观看 | 天天拍天天草 | 91香蕉久久 | 中文字幕一区二区三区四区视频 | 免费又黄又爽视频 | 国产精品久久久久久久久费观看 | 久久久久久久久免费视频 | 欧美日韩性视频在线 | 成人综合婷婷国产精品久久免费 | a级国产乱理论片在线观看 伊人宗合网 | www.色爱| 国内精品久久久久影院一蜜桃 | 成人在线播放免费观看 | 一区二区三区污 | 美女黄视频免费看 | 天天干夜夜爱 | 在线黄色毛片 | 欧美aaa一级 | 欧美日韩国产精品久久 | 亚洲天堂在线观看完整版 | 高潮毛片无遮挡高清免费 | 九九九热精品 | 国产一级二级在线播放 | 激情欧美日韩一区二区 | 天天操天天操天天操天天操天天操 | 国产精品视屏 | 久热久草| 国产色视频网站2 | 国产亚洲激情视频在线 | 四虎5151久久欧美毛片 | 久久国内精品 | 久久婷婷精品 | 国产成人99av超碰超爽 | 精品黄色在线观看 | www.黄色片网站 | 波多野结衣电影一区 | 免费视频资源 | 99久久这里只有精品 | 日韩国产欧美在线视频 | 成人三级网站在线观看 | 成年人免费av网站 | 在线视频福利 | 久久综合九色综合欧美就去吻 | 色婷婷久久久综合中文字幕 | 国产中文a| 精品欧美小视频在线观看 | 亚洲精选在线 | 人人盈棋牌 | 中文字幕在线观看视频一区二区三区 | 久久草精品 | 午夜国产福利在线 | 91精品国产自产在线观看永久 | 日韩有码在线播放 | 天天射日 | 国产91免费在线观看 | 日韩久久精品一区二区 | 日韩一级理论片 | 国内精品久久久久影院日本资源 | www.在线观看视频 | 岛国一区在线 | 精品自拍sae8—视频 | 91.麻豆视频 | 超碰九九 | 国产视频久久 | 久久天堂精品视频 | 国产99爱| 日韩成人精品一区二区三区 | 色中文字幕在线观看 | 国产精品高清在线 | 国产伦精品一区二区三区照片91 | 色播六月天 | 日韩中文在线观看 | 国产在线自 | 日韩亚洲在线观看 | 天天干天天干天天干天天干天天干天天干 | 国产玖玖在线 | 国产一区二区高清 | 国产成本人视频在线观看 | 丁香六月在线观看 | 不卡的av | 99九九热只有国产精品 | 婷婷久久五月 | 丁香影院在线 | 一本一道久久a久久综合蜜桃 | 黄污在线观看 | 9999在线观看 | 亚洲精品国产精品国自产在线 | 五月激情天 | 亚洲天天摸日日摸天天欢 | 国产精品成人国产乱一区 | 高清av网站| 国产二区免费视频 | 精品美女在线视频 | 97超级碰碰碰视频在线观看 | 91成人小视频 | 欧美精选一区二区三区 | 久久久久久久久久久久久影院 | 婷婷在线网 | 色综合亚洲精品激情狠狠 | 久久精品一区二区三区中文字幕 | 日韩精品中文字幕一区二区 | 色综合久久久久久久 | 亚洲毛片一区二区三区 | 久久96国产精品久久99软件 | 亚洲国产片色 | 美女精品在线观看 | 天天爽夜夜爽人人爽一区二区 | wwxxxx日本| 成人免费视频免费观看 | 韩国av免费看 | 亚洲年轻女教师毛茸茸 | 亚洲精品一区二区三区四区高清 | 四虎影院在线观看av | 激情综合五月婷婷 | 国产1级毛片 | 国产永久免费高清在线观看视频 | 日韩 在线a| 园产精品久久久久久久7电影 | 国产黄大片在线观看 | 久久久久久网站 | 尤物97国产精品久久精品国产 | 91在线色| 久久激情电影 | 国产精品久久久久久电影 | 一区二区三区日韩在线观看 | 在线视频 成人 | 国产精品欧美一区二区 | 91最新网址| 欧美日韩免费一区二区 | 天天插天天射 | 日本久久电影 | 成人av影院在线观看 | 日韩三级视频在线观看 | 天天·日日日干 | 九九视频这里只有精品 | 精品国产久 | 亚洲国产日韩在线 | 美女激情影院 | 有码中文字幕 | 亚洲欧洲视频 | 国产精品对白一区二区三区 | 很黄很黄的网站免费的 | 色吊丝在线永久观看最新版本 | 国产福利91精品一区二区三区 | 一区二区三区 中文字幕 | 国产精品va | 欧美福利片在线观看 | 99精品色 | 欧美精品乱码久久久久久按摩 | 欧美激情在线网站 | 探花视频在线观看+在线播放 | 亚洲精品xxx | 久久国产影院 | 另类五月激情 | 国产精品99蜜臀久久不卡二区 | 国产精品久久99综合免费观看尤物 | 国产在线第三页 | 91传媒在线播放 | 精品中文字幕视频 | 国产不卡在线 | 日韩电影精品 | www.狠狠插.com| 亚洲 欧美 日韩 综合 | 久久国产露脸精品国产 | 麻豆免费视频观看 | 国产精品亚洲片夜色在线 | 91资源在线免费观看 | 色视频网站在线观看一=区 a视频免费在线观看 | 亚洲最快最全在线视频 | 亚洲欧美在线观看视频 | 在线视频 一区二区 | 色婷婷综合激情 | 成人性生交大片免费观看网站 | 6080yy精品一区二区三区 | 999国内精品永久免费视频 | 黄色a级片在线观看 | av资源网在线播放 | 一区二精品 | 激情丁香5月 | 天天操天天摸天天干 | 美女久久久久久久久久久 | 欧美在线视频日韩 | 婷婷久久丁香 | 911精品视频 | 狠狠色狠狠色合久久伊人 | 夜夜骑天天操 | 国产成人av电影在线观看 | 日韩精品免费一区二区 | 国产美女精品视频免费观看 | 五月天中文字幕mv在线 | 精品视频免费久久久看 | 久久99在线 | 国产精品24小时在线观看 | 精品国产福利在线 | 99视频国产精品 | 中文字幕在线观 | 国产美女精品久久久 | 91精品网站在线观看 | 国产一级精品在线观看 | 天天综合色天天综合 | 丁香婷婷激情国产高清秒播 | 日日干天天爽 | 国产精品一码二码三码在线 | 久久久精品一区二区 | 色先锋资源网 | 伊人电影在线观看 | 国产精品1区2区在线观看 | 色妞色视频一区二区三区四区 | 手机av永久免费 | 久草在在线 | 激情婷婷av | 九月婷婷人人澡人人添人人爽 | 国产一级二级在线 | 99热国产在线观看 | 国产精品欧美精品 | 最新婷婷色 | 久草综合在线观看 | 免费视频二区 | 亚洲日本色 | 免费av的网站 | 日韩欧美一级二级 | 制服丝袜在线91 | 操操操操网| 丁香5月婷婷久久 | 国产a国产a国产a | 日日草天天干 | 久草www | 色婷婷福利 | 久久国产精品久久w女人spa | 人人射av | 久久精品精品电影网 | 丁香久久久 | 97精品国产一二三产区 | 欧美综合久久久 | 国产亚洲精品美女 | 成年人在线免费看 | 日本久久视频 | 91亚色视频| 亚洲精品麻豆视频 | 99久久久久成人国产免费 | 成年人视频在线观看免费 | 爱情影院aqdy鲁丝片二区 | 婷婷激情影院 | 国产一级在线观看 | 99re亚洲国产精品 | 日本黄色免费播放 | 69精品视频 | 国产中的精品av小宝探花 | 精品国产精品一区二区夜夜嗨 | 91桃色免费观看 | 久久久久国产视频 | 永久中文字幕 | www.天天干.com | 成人午夜影院 | 日韩两性视频 | a天堂在线看| 888av| 日韩在线电影一区二区 | 超碰97公开 | 久久免费视频7 | 国产性天天综合网 | 国产亚洲精品久久久久久移动网络 | 一级黄视频| 日韩精品一区二区三区第95 | 亚洲午夜精品一区 | 美女视频是黄的免费观看 | 丝袜美女视频网站 | 成人cosplay福利网站 | 99视频在线精品国自产拍免费观看 | 国产精品第一视频 | 免费在线播放视频 | 日韩欧美一级二级 | 色鬼综合网 | 国产黄在线观看 | 国产在线观看污片 | 91在线免费观看网站 | 亚洲精品综合在线观看 | 国产精品久久9 | 欧美久久精品 | 粉嫩aⅴ一区二区三区 | 日韩在线电影一区二区 | 成年人国产精品 | 88av视频| 日本激情动作片免费看 | 免费色av | 成人a级免费视频 | 成人黄色在线 | 国内三级在线 | 999视频网站 | ww亚洲ww亚在线观看 | 成人国产精品久久久 | 日本中文字幕网 | 不卡的av中文字幕 | 中文字幕一区二区三区乱码在线 | 久久久久免费精品视频 | 中日韩三级视频 | 天天操天天干天天综合网 | 97韩国电影 | 久久在线一区 | av电影免费在线看 | 久亚洲| 91免费高清视频 | 日韩欧美一区二区三区在线 | 久久美女视频 | 日韩在线视频网站 | 日日夜夜操av | 成人在线视频免费看 | 一二三区视频在线 | 国产精品久久9 | 色婷婷电影网 | 日韩高清 一区 | 久草在线视频首页 | 日韩免费精品 | 99久久久久 | 粉嫩av一区二区三区四区五区 | 91女神的呻吟细腰翘臀美女 | 久久精品网址 | 日日碰狠狠躁久久躁综合网 | 亚洲在线黄色 | 亚洲高清在线精品 | 九九免费在线观看视频 | 成人av电影免费 | 国内精品久久久久久 | 国产婷婷一区二区 | 午夜精品视频免费在线观看 | 久久精品视频18 | 中文字幕国产在线 | 91精品一区二区三区蜜臀 | 免费影视大全推荐 | 久久中国精品 | 国产精品国产三级国产aⅴ9色 | 久久综合久久综合久久 | 免费日韩一区二区三区 | 日韩在线视频网址 | 日本精品小视频 | 成人h动漫精品一区二 | 奇米影视在线99精品 | 国产啊v在线观看 | 91高清免费 | 1024在线看片 | 久久看视频 | 嫩草av在线 | 丁香婷婷综合激情五月色 | 久久黄色a级片 | 久久免视频 | 麻豆视频在线观看免费 | 91成人精品在线 | 亚洲专区欧美专区 | 免费福利片2019潦草影视午夜 | 欧美视频在线观看免费网址 | 欧美在线视频a | 人人干人人做 | 日日精品 | 国产精品福利久久久 | 久久国产视屏 | 日韩毛片久久久 | 色综合激情久久 | 亚洲h视频在线 | 成人一区不卡 | 亚洲一级片av | 成年人免费在线观看网站 | 亚洲国产精选 | 500部大龄熟乱视频 欧美日本三级 | 91福利视频一区 | 不卡的av电影在线观看 | 国产精品正在播放 | 在线中文字幕视频 | 日韩欧美高清免费 | 欧美日韩精品免费观看 | 亚洲天堂网站视频 | 精壮的侍卫呻吟h | 中文国产成人精品久久一 | 伊人天天操 | 色www精品视频在线观看 | 久久夜色精品国产欧美乱极品 | 欧美日韩xxxxx | 国产一区二区久久久久 | 亚洲精品456在线播放乱码 | 日韩a免费 | 国产高清第一页 | 久久99在线视频 | 久久综合狠狠综合久久狠狠色综合 | 欧美一级性视频 | 欧美综合干 | 成人在线播放免费观看 | av在观看 | 九九热免费观看 | 婷婷伊人五月天 | 午夜精品区 | 久久综合九色综合久99 | 黄色av电影一级片 | 国产专区视频在线观看 | 伊人在线视频 | 欧美一进一出抽搐大尺度视频 | 天天射天天爱天天干 | 西西大胆免费视频 | x99av成人免费 | 天天狠狠干 | 国产精品久久久久久吹潮天美传媒 | 久久综合久久久 | 亚洲欧美国产日韩在线观看 | 色婷婷在线视频 | 一区二区三区四区在线免费观看 | 日日夜夜精品免费视频 | 永久免费av在线播放 | 日本中文字幕网址 | 国产午夜精品福利视频 | 国产成人在线一区 | 免费看黄在线看 | 精品一区二区三区电影 | 国产精品入口麻豆 | 91手机电影 | 日韩乱码在线 | 国产精品va| 欧美激情视频一区二区三区 | 日日射天天射 | 久久久久国产一区二区三区 | 在线 国产 亚洲 欧美 | 国产美女在线免费观看 | 碰超在线97人人 | 夜夜夜夜操 | 狠狠操操网 | 国产一区二区午夜 | 日韩在线观看视频中文字幕 | 日韩资源在线观看 | 日韩欧美在线免费 | 久久精品电影院 | 韩国三级一区 | 黄色软件视频网站 | 成人sm另类专区 | 国产精品99久久久久久久久久久久 | 欧美看片| 天天色天天干天天 | 狠日日 | 日本不卡一区二区三区在线观看 | www久久国产| 日韩精品免费在线视频 | 久草视频在线资源站 | 中文字幕一区二区三区精华液 | 久久99精品久久久久婷婷 | 在线婷婷 | 黄色大片入口 | 欧美91片 | 一区二区视频免费在线观看 | 久久av中文字幕片 | 五月婷婷色播 | 久久免费高清视频 | 麻豆一区二区 | 中文字幕黄网 | 日韩高清精品一区二区 | 欧美aa级 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 色吧久久 | 欧美巨乳波霸 | 久九视频 | 天天操天天干天天爱 | 精品毛片久久久久久 | 亚洲成人黄色在线观看 | 久久久久久久久久久久久9999 | 波多野结衣在线视频免费观看 | 96在线 | 日韩三级不卡 | 精品成人网| 国产精品嫩草影院123 | 国产精品久久视频 | 久草久草久草久草 | 亚洲久草在线视频 | 干亚洲少妇 | 中文字幕一区二区三区四区在线视频 | 色狠狠综合 | 黄色小说在线观看视频 | 国产在线91精品 | 国产精品久久久久久久免费观看 | 日韩在线色视频 | 天堂视频中文在线 | 99精品国产福利在线观看免费 | 久久久午夜精品理论片中文字幕 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 欧美福利片在线观看 | 日韩av区 | 免费a网址 | 9999国产精品 | 久久人人精 | 婷婷亚洲五月色综合 | 四虎国产精品成人免费影视 | 91免费看片黄 | 亚洲欧美综合精品久久成人 | 国产综合在线观看视频 | 久久精品视频日本 | 四虎国产精 | 国产免码va在线观看免费 | 色先锋av资源中文字幕 | av电影免费观看 | 久久桃花网| 久久国产视屏 | 天天色播 | 亚洲精品在线国产 | 成人在线观看你懂的 | 黄色的视频网站 | 日本动漫做毛片一区二区 | 丁香婷婷激情网 | 黄p在线播放 | 日韩av影视在线 | 国产精品久久久久久久久久了 | 国产精品久久久久久久午夜片 | 最近字幕在线观看第一季 | 激情五月***国产精品 | av免费看在线| 国语精品免费视频 | 日韩av免费在线电影 | 国产亚洲免费的视频看 | 激情视频二区 | 一区二区三区高清在线 | 免费视频一区二区 | 最新国产中文字幕 | 亚洲精品中文字幕视频 | 中文字幕一区二区三区乱码不卡 | 国产91av视频在线观看 | 久久爱资源网 | 最近中文字幕视频网 | 亚洲精品ww | 麻豆免费在线播放 | 亚洲另类视频 | 色97在线| 精品美女在线观看 | 91.麻豆视频 | 97在线看 | 久草在线在线视频 | 91av视频在线免费观看 | 欧美十八| 日韩欧美精品一区 | 最近中文字幕大全 | 日韩精品一区二区在线视频 | 欧美精品久久久久久久亚洲调教 | 91免费在线 | 日韩天堂在线观看 | 91av原创 | 亚洲美女久久 | 久久a免费视频 | 2024国产在线 | 日本精品一区二区三区在线播放视频 | 天天干干| 黄色国产高清 | 青草视频免费观看 | 免费三级黄 | 久草视频在线资源站 | 亚洲在线不卡 | 亚州精品在线视频 | 免费在线国产视频 | 毛片在线播放网址 | 91精品久久久久久久99蜜桃 | 国产高清一级 | 91视频啪| 久久这里只有精品1 | 又色又爽的网站 | 精品日本视频 | 久久麻豆视频 | 夜夜天天干| 日韩高清一二区 | 在线欧美国产 | 在线视频日韩精品 | 日本公妇色中文字幕 | 国内外成人在线 | av网址最新 | av网站有哪些 | 天天综合色 | .国产精品成人自产拍在线观看6 | 国产精品久久在线观看 | 国产黄色av网站 | 国产中文字幕国产 | 在线播放第一页 | 黄色一级免费网站 | 日韩av视屏 | 人交video另类hd | 国产一区二区三区四区在线 | 欧美精品一区二区性色 | 日精品在线观看 | 四虎成人免费观看 | 亚洲高清91| 97在线公开视频 | 久久精品韩国 | 国产玖玖视频 | 久久这里精品视频 | 成人久久久久久久久久 | av片子在线观看 | 亚洲精品免费视频 | 欧美日韩不卡一区二区 | 91精品亚洲影视在线观看 | 毛片一级免费一级 | 欧美日韩国产精品久久 | 国产裸体视频网站 | 日韩天堂在线观看 | 欧美肥妇free| 亚洲丝袜一区二区 | 久久情爱| 国产精品青青 | 国产精品一二 | 国内精品久久久 | 91大神在线观看视频 | www.国产精品 | 久久国语 | 亚洲精品一区二区精华 | 欧美视频www | 国产精品igao视频网网址 | 国产精品理论在线观看 | 久久精品欧美视频 | 国产精品女主播一区二区三区 | 国产福利一区二区在线 | 国产精品资源在线观看 | 中文字幕一区二区三区四区 | 欧亚久久| 一区二区三区免费在线播放 | 国产精品第52页 | 亚洲精品tv久久久久久久久久 | 日韩久久片 | 经典三级一区 | 性色av免费看 | 成人免费视频在线观看 | 久久久久久久久久电影 | 最新动作电影 | 国内成人精品2018免费看 | 深夜免费福利视频 | 玖玖视频免费在线 | 91精选在线观看 | 日日夜夜精品免费观看 | 欧美在线观看视频一区二区三区 | 中文字幕免费观看视频 | 国产精品一区二区在线播放 | 国产精品亚洲成人 | 久操中文字幕在线观看 | 四虎影视成人永久免费观看视频 | 国产精品成人免费精品自在线观看 | 久久免费视频观看 | 狠狠操电影网 | 在线观看视频你懂得 | 激情五月看片 | 8x成人在线 | 久精品一区 | 91av精品| 成人亚洲综合 | 97在线视频免费 | 亚洲精品视频中文字幕 | 狠狠操导航 | 91成人免费电影 | 黄色av电影网 | 久久99免费 | 午夜成人免费影院 | 久久精品视频在线播放 | 日本丰满少妇免费一区 | 奇米影视8888在线观看大全免费 | 91亚·色| 国产精品专区一 | 可以免费观看的av片 | 国产精品久久久久久久久久新婚 | 精品视频123区在线观看 | 婷婷性综合| 欧美在线观看视频一区二区 | 亚洲成av人片在线观看 | 国产91精品在线播放 | 欧美激情第八页 | 91免费在线视频 | 日韩欧美电影网 | 国产精品不卡av | av中文资源在线 | 日韩精品视频一二三 | aaa亚洲精品一二三区 | 天天插天天操天天干 | 黄色的网站免费看 | 久久狠狠干| 在线播放国产一区二区三区 | 国产精品成久久久久 | 国产另类av | 99热精品国产一区二区在线观看 | 亚洲欧洲成人精品av97 | 美女视频黄是免费的 | 麻豆传媒电影在线观看 | 国产精品一区二 | 亚洲高清免费在线 | 成人精品99 | 欧美日韩国产网站 | 国产不卡在线视频 | 欧美黄色软件 | 国产精品区免费视频 | 久久久视屏 | 久久久国产高清 | 在线a人v观看视频 | 婷婷久月 | 成人一区二区三区在线 | 六月天色婷婷 | 超碰97成人 | 免费看黄色毛片 | 日本婷婷色 | 国产精品欧美日韩 | 中文在线a∨在线 | 在线看一区| 97人人模人人爽人人喊网 | 久久久久久久免费观看 | 成年人电影免费看 | 久久久久福利视频 | 91九色视频在线观看 | 欧美在线1 | 亚洲影院国产 | 国产高清无线码2021 | 在线观看深夜视频 | 五月激情久久 | 91久久偷偷做嫩草影院 | 91成人精品一区在线播放 | 国产永久免费高清在线观看视频 | 精品一区二区三区四区在线 | 国产精品免费av | 精品人人人人 | 国产亚洲情侣一区二区无 | 日日日日 | 美女福利视频在线 | 亚洲亚洲精品在线观看 | 精品国产乱码一区二区三区在线 | 天堂视频一区 | 九九九九九九精品 | 亚洲精品中文在线资源 | 国产精彩视频 | 国产精品观看在线亚洲人成网 | 久久久久久久久久久久99 | 亚洲视频免费在线看 | 国产精品日韩久久久久 | 日韩高清激情 | 精品国内自产拍在线观看视频 | 中文字幕在线播放一区二区 | 操操操操网 | 国产精品久久99综合免费观看尤物 | 成人免费在线播放 | 亚洲欧美激情精品一区二区 | 久久久综合 | 综合色在线 | 黄色视屏在线免费观看 | 亚洲精品美女久久 | 精品国产成人在线影院 | 国产一区二区三区高清播放 | 99高清视频有精品视频 | 国产午夜三级一二三区 | 日韩一二区在线 | av线上看 | 香蕉免费 | 国产亚洲精品精品精品 | 一级精品视频在线观看宜春院 | 爱爱av网| 看片一区二区三区 | 欧美天天综合 | 久草视频在线播放 | 又黄又刺激的视频 | 香蕉视频国产在线观看 | 在线观看视频在线观看 | 国产精品精品国产色婷婷 | 国产又黄又猛又粗 | 亚洲精品777| 国产欧美日韩视频 | 天天色天天射天天操 | 欧美激精品 | 婷婷综合国产 | 在线不卡视频 | 欧美日韩国产在线一区 | 久久免费99精品久久久久久 | 狠狠干天天操 | 91精品对白一区国产伦 | 91在线最新| 国产精品免费观看在线 | 久久久久亚洲精品成人网小说 | 在线观看成年人 | 婷婷亚洲综合 | 国产一区高清在线 | 国产字幕在线播放 | 色播99| 国产视频精品久久 | 日韩无在线 | 黄免费在线观看 | 久久久免费精品国产一区二区 | 国产一区免费看 | 亚洲 欧洲 国产 日本 综合 | 在线观看成人av | 最新的av网站 | 四虎影视成人永久免费观看亚洲欧美 | 99久久婷婷国产精品综合 | 黄色小视频在线观看免费 | 久久久久久久久久久福利 | 亚洲精品美女久久久久网站 | 精品国产乱码久久久久久1区二区 | 国产欧美日韩精品一区二区免费 | 国产精品麻豆果冻传媒在线播放 | 亚洲日本韩国一区二区 | 亚洲专区欧美专区 | 黄色软件在线看 | av综合网址 | 五月婷婷丁香六月 | 精品国产免费av | 一区二区观看 | 国产婷婷一区二区 | 91九色视频国产 | 国产裸体无遮挡 | 亚洲天堂视频在线 | 久久精品在线免费观看 | 国产一级做a | 91人人澡人人爽人人精品 | 天天操天天草 | 干狠狠 | av 一区二区三区四区 | 1024手机看片国产 | 一区二区三区在线看 | 欧美日韩在线免费观看 | av在线专区| 日韩艹 | 99久久精品国产免费看不卡 | 亚洲一级电影视频 | 日韩大片免费观看 | 成人精品在线 | 国产精品久久久久久久久久久免费 | 92国产精品久久久久首页 | www最近高清中文国语在线观看 | 亚洲一区二区麻豆 | 亚洲午夜久久久综合37日本 | 在线视频成人 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 亚洲va欧美va | 精品人妖videos欧美人妖 | 色播99 | 伊人激情网 | 免费在线观看av片 | 欧美日韩一区二区三区在线免费观看 | 狠狠干成人 | 日韩精品中文字幕在线 | 亚洲黄色三级 | 亚洲深夜影院 | 国产精品久久久久久久久费观看 | 91在线看黄| 精品夜夜嗨av一区二区三区 | 天天操天天干天天综合网 | 国产精品24小时在线观看 | 中文字幕av一区二区三区四区 | 国产尤物视频在线 | 国产精品毛片久久 | 午夜精品久久久久久99热明星 | 欧美日韩国产一区二区三区在线观看 | 久久久精品福利视频 | 天天干天天想 | 久久久久美女 | 四虎最新域名 | 五月综合色 | 天天综合天天做天天综合 | 国产精品久久久久久久免费大片 | 国产精品美女久久久久久 | 国产一二区在线观看 | 日韩精品免费在线观看 | 在线播放一区 | 国产色秀视频 | 中文字幕日韩高清 | 国产免费久久精品 | 日操操| 免费观看版 | 99草在线视频 | 国产精品国产三级国产不产一地 | 久久中文字幕在线视频 | 91亚洲网站 | 中文字幕中文中文字幕 | 911av视频 | 亚洲一级片免费观看 | 伊人婷婷网 | 人人要人人澡人人爽人人dvd | 精品国产三级 | 91九色视频在线播放 | 国产精品永久久久久久久www | 草在线视频| 日韩高清在线看 | 日本韩国精品一区二区在线观看 | 亚洲精品久久视频 | 日韩专区在线观看 | 性日韩欧美在线视频 | 久久夜色电影 | 在线电影 一区 | 国产一区二区在线观看视频 | 精品国产自在精品国产精野外直播 | 久久草在线视频国产 | 亚洲国产精品va在线看黑人动漫 | 九色视频网 | 四虎影视精品永久在线观看 | 激情综合色综合久久 | 国产高清视频 | 日本久热| 中文字幕国内精品 | 久久久久久久亚洲精品 | 日韩,中文字幕 | 欧美了一区在线观看 | 亚洲激情电影在线 | 国产精品国产三级在线专区 | 天天干天天操天天 | 免费看一级片 | 69av在线视频 | 久草资源在线观看 | 久久久久久久99精品免费观看 | 日韩欧美成人网 | 最近中文字幕在线中文高清版 | 精品国产乱码久久久久久久 | 久久国产欧美日韩精品 | 成人全视频免费观看在线看 | 天天爱天天操 | 中文字幕在线观看2018 | 国产成人精品国内自产拍免费看 | 少妇性bbb搡bbb爽爽爽欧美 | 在线欧美国产 | 不卡视频在线 | 久久爱影视i| 丁香激情婷婷 | 99re国产视频 | 免费不卡中文字幕视频 | av黄色在线播放 | 婷婷日韩 | 久久久久国产精品厨房 | 在线观看国产区 | 成人app在线播放 | 国语对白少妇爽91 | 国产精品男女啪啪 | 狠狠干天天操 | 狠狠狠狠狠色综合 | 亚洲精品黄色 | 免费在线播放视频 | 久久精品视频在线看 | 久久精品久久精品 | 一级特黄av | 国产一区 在线播放 | 成全免费观看视频 | 国产精品18久久久久白浆 | 日本精品视频网站 | 香蕉视频在线网站 | 亚洲一级电影在线观看 | 日韩成人免费在线电影 | 欧美精品久久久久 | 国产一区二区在线观看免费 | 91人人视频在线观看 | 国产精品久久久久久久久久久久久 | 911国产| 又黄又爽又刺激的视频 | 亚洲精品www久久久久久 | 中文字幕 国产专区 | 青青久草在线视频 | 日日躁夜夜躁xxxxaaaa | 91高清免费看 | 色天天中文 | 一区二区三区电影在线播 | 天天激情在线 | 又黄又爽又刺激的视频 | 午夜精品中文字幕 | 在线你懂的视频 | 四虎最新域名 | 欧美日韩在线视频观看 | 中文字幕一区二区三区视频 | 色婷婷亚洲婷婷 |