图像的灰度处理一、关键技术灰度处理。要将一个图片灰度处理,必须取出图片中每一个像素的灰度值,再将此点的颜色的红、绿、蓝成分都设置为灰度值。(灰度值=红色×+绿色×+蓝色×)取得某像素颜色可以通过API函数GetPixel完成;设置某点的颜色可以通过SetPixel完成,CDC类对它们进行了重新封装,原型如下:(1)GetPixel该函数用于取得某像素的颜色。语法:COLORREFGetPixel(intXPos,//X坐标intnYPos//Y坐标); (2)SetPixel 该函数用于设置某像素的颜色。 语法: COLORREFSetPixel(intx,//X坐标inty,//Y坐标COLORREFcrColor//要设置的颜色);怎样将一个颜色值中的红、绿、蓝成分取出呢?将COLORREF转换成16进制看一下:olor[6];COLORREFcolor=RGB(128,96,64)itoa(olor,16);olor地址中存储内容为0F,40就是10进制的64;60就是10进制的96;80就是10进制的128。从上面的内容可以看出,颜色的存储格式实际是将红、绿、蓝成份按照B、R、G的格式存储的,根据这个规则,就可以取出某颜色的红、绿、蓝成份。注:这里使用的是BMP图像(因为它在MFC中显示简单些0_0)。二关键代码#if!defined(_CDD512__INCLUDED_)#_CDD512__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#ifndef__AFXWIN_H__#errorinclude''beforeincludingthisfileforPCH#endif#include""//mainsymbols///////////////////////////////////////////////////////////////////////////////CGrayPicApp:////classCGrayPicApp:WinApp{public:CGrayPicApp();//Overrides//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CGrayPicApp)public:virtualBOOLInitInstance();//}}AFX_VIRTUAL//Implementation//{{AFX_MSG(CGrayPicApp)//NOTE-theClassWizardwilladdandremovememberfunctionshere.//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!//}}AFX_MSGDECLARE_MESSAGE_MAP()};///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}//Microsof
图像的灰度处理 来自淘豆网m.daumloan.com转载请标明出处.