b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

图像的灰度处理(_219DC38]

电脑杂谈  发布时间:2021-03-02 17:03:47  来源:网络整理

图像的灰度处理一、关键技术灰度处理。要处理灰度图片,必须取出图片中每个像素的灰度值,然后将此点颜色的红色,绿色和蓝色分量设置为灰度值。 (灰度值=红色×0. 30+绿色×0. 59+蓝色×0. 1 1)可以通过API函数GetPixel获得特定像素的颜色;可以将特定点的颜色设为通过SetPixel设置,CDC类将它们重新打包。原型如下:(1) GetPixel此函数用于获取像素的颜色。语法:COLORREF GetPixel(intXPos,// X坐标intnYPos // Y坐标) ;(2) SetPixel此功能用于设置像素的颜色。语法:COLORREF SetPixel(int x,// X坐标int y,// Y坐标COLORREF crColor //要设置的颜色);如何更改红色,绿色,以及如何去除蓝色分量?将COLORREF转换为十六进制并查看:charcColor [6]; COLORREF color = RGB(128,96,6 4) itoa(color,cColor,1 6);此时,地址中为cColor,存储内容为0F406080,40为十进制64; 60为十进制96; 80为十进制128。

灰度图像处理_灰度图像_灰度图像的灰度值

从以上内容可以看出,颜色存储格式实际上以B和G格式存储红色,绿色和蓝色分量。根据此规则,某种颜色的红色,绿色和蓝色可以拿出来。原料。注:BMP图像用在这里(因为它是简单的MFC 0_ 0) 1的两个关键代码#如果定义(AFX_GRAYPIC_H__219DC38F_FF6A_4047_88CC_CD183559D512__INCLUDE D_)的#define AFX_GVERPIC_H__CD183559D512__INCLUDE D_显示。!)的#define AFX_GVERPIC_H__DC38F_FF6if_MSC_4047如果一旦> 1000的#ifndef __AFXWIN_H__#错误,在为PCH包含此文件之前包含include'stdafx.h #endif #include“ resource.h” //主要符号//////////////////////// //////////////////////////////////////// /// // CGrayPicApp://有关此类的实现,请参见GrayPic.cpp //类CGrayPicApp:public CWinApp {public:CGrayPicApp(); //覆盖// ClassWizard生成的虚拟函数覆盖// // {{AFX_VIRTUAL(CGrayPicApp)public:virtual BOOL InitInstance(); //}} AFX_VIRTUAL //实现// {{AFX_MSG(CGrayPicApp)// //注意-ClassWizard将在此处添加和删除成员函数。 //不要编辑在这些生成的代码块中看到的内容! //})AFX_MSG DECLARE_MESSAGE_MAP()}; 2 ///////////////////////////// ////////////// ///////// /////////////////////// // {{AFX_INSERT_LOCATION}} // Microsoft Visual C ++将插入其他紧接在前一行之前的声明。 #endif //!defined(AFX_GRAYPIC_H__219DC38F_FF6A_4047_88CC_CD183559D512__INCLUDED _)// GrayPic.cpp:定义应用程序的类行为。 // #include“ stdafx.h” #include“ GrayPic.h” #include“ GrayPicDlg.h”#定义新的DEBUG_NEW #undef THIS_FILE静态字符THIS_FILE [] = __FILE__; #万一 //////////////////////////////// //////////////// ////////////////////////// // CGrayPicApp BEGIN_MESSAGE_MAP(CGrayPicApp,CWinApp)// {{AFX_MSG_MAP(CGrayPicApp)// //注意-ClassWizard将在此处添加和删除映射宏。 //不要编辑在这些生成的代码块中看到的内容! //})AFX_MSG ON_COMMAND(ID_HELP,CWinApp :: OnHelp)END_MESSAGE_MAP()///////////////////////////////// ///////// //////////////////// CGrayPicApp构造CGrayPicApp :: CGrayPicApp( } {// TODO:在此处添加构造代码,//将所有重要的初始化放入InitInstance} ///////////////////////////// //////////// ///////////////////////////////// //一个仅CGrayPicApp object3CGrayPicApptheApp; /////// ////////////////////////////////////////////// ////// /////////////////// // CGrayPicApp初始化BOOL CGrayPicApp :: InitInstance(){AfxEnableControlContainer(); //标准初始化//如果您不使用这些功能并希望减小最终可执行文件的大小,则应从以下//中删除不需要的特定初始化例程。 #ifdef _AFXDLL Enable3dControls(); #else Enable3dControlsStatic(); #endif //在共享DLL中使用MFC时调用// //静态链接到MFC时调用CGrayPicDlgdlg; m_pMainWnd =&dlg; intnResponse = dlg.DoModal(); if(nResponse == IDOK){//待办事项:将对话框//用OK取消时在此处放置代码} // if if(nResponse == IDCANCEL){// TODO:对话框为/时将此处放置代码来处理/ d与“取消”一起被忽略// //由于对话框已关闭,请返回FALSE,以便我们退出//应用程序,而不是启动应用程序的消息泵。返回FALSE;} // GrayPicDlg.h:头文件的#if定义(AFX_GRAYPICDLG_H__A7E96313_B9AE_INCLU5_9660_EB23633241E7 DED_)的#define AFX_GRAYPICDLG_H__A7E96313_B9AE_44C5_9660_EB23633241E7__INCLUDED_4#如果_MSC_VER> 1000的#pragma一次#ENDIF // _MSC_VER> 1000 //////////// ///////////////////////////////////////////////////// ///////// // CGrayPicDlg对话框类CGrayPicDlg:public CDialog {//构建public:intXToTen(char chr); intXToI(char * xNumber); voidGetRGB(COLORREF color,int&R,int&G,int&B); CGrayPicDlg(CWnd * pParent = NULL); //标准构造函数//对话数据// {{AFX_DATA(CGrayPicDlg)枚举{IDD = IDD_GRAYPIC_DIALOG}; CStaticm_StaGray; //})AFX_DATA // ClassWizard生成的虚函数覆盖///受保护的{{{AFX_VIRTUAL(CGrayPicDlg)):virtual void DoDataExchange(CDataExchange * pDX); //}} AFX_VIRTUAL //受到保护的扩增:HICON m_hIcon; //生成的消息映射函数// {{AFX_MSG(CGrayPicDlg)虚拟BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon();虚拟void OnOK(); afx_msgINT nIDTimer(U); //})AFX_MSG DECLARE_MESSAGE_MAP()}; // {{AFX_INSERT_LOCATION}} 5 // DDX / DDV支持// Microsoft Visual C ++将在上一行之前插入其他声明。 #万一 //! Defined(AFX_GRAYPICDLG_H__A7E96313_B9AEINC_EBLUINC)// GrayPicDlg.cpp:实现文件// #include“ stdafx.h” #include“ GrayPic.h” #include“ GrayPicDlg.h” #include #ifdef _DEBUG#定义新的THBIS_FILE#定义新的THBIS_FILE# [] = __FILE__; #万一 ///////////////////////////////////////////// /// /////////////////////////// // CGrayPicDlg对话框CGrayPicDlg :: CGrayPicDlg(CWnd * pParent / * = NULL * /):CDialog(CGrayPicDlg :: IDD,pParent){// {{AFX_DATA_INIT(CGrayPicDlg)//注意:ClassWizard将添加成员初始化//))AFX_DATA_INIT //注意LoadIcon在Win32中不需要后续的DestroyIcon m_hIcon = AfxGetApp() -> LoadIcon(IDR_MAINFRAME);} voidCGrayPicDlg :: DoDataExchange(CDataExchange * pDX){CDialog :: DoDataExchange(pDX); // {{AFX_DATA_MAP(CGrayPicDlg)DDX_Control(pDX,IDC_STAGRAY,m_StaGray); //}} AFX_DATA_MAP} BEGIN_MESSAGE_MAP(CGrayPicDlg,CDialog)// {(AFX_MSG_MAP(CGrayPicDlg)ON_WM_WCON()ON_WM_WCON)} AFX_MSG_MAP END_MESSAGE_MAP()////////////// //////////////////////////////////////////////////// //// // CGrayPicDlg消息处理程序BOOL CGrayPicDlg :: OnInitDialog(){CDialog :: OnInitDialog(); //设置此对话框的图标。当应用程序的主窗口不是对话框SetIcon(m_hIcon,TRUE)时,框架会自动执行此操作。 //设置大图标SetIcon(m_hIcon,FALSE); //设置小图标this-> SetTimer(1,500,NULL); // TODO:在此处添加额外的初始化,返回TRUE; //除非将焦点设置为控件,否则返回TRUE} //如果在对话框中添加了一个最小化按钮,则将需要下面的代码//来绘制图标。对于使用文档/视图模型的MFC应用程序,//框架会自动为您完成此操作。 voidCGrayPicDlg :: OnPaint(){CPaintDCdc(this); //系统调用此方法以获得在用户拖动//最小化窗口时显示的光标。} HCURSOR CGrayPicDlg :: OnQueryDragIcon(){返回(HCURSOR)m_hIcon;} voidCGrayPicDlg :: OnOK(){/ / CDialog :: OnOK(); } voidCGrayPicDlg :: GetRGB(COLORREF color,int&R,int&G,int&B)7 {charcRGB [6]; itoa(color,cRGB,1 6); charcR [2],cG [2],cB [2]; if(strlen(cRGB)== 5) {strcpy(cB,cRGB); strcpy(cG,&cRGB [1]); strcpy(cR,&cRGB [3]); cB [1] ='\ 0'; cG [2] ='\ 0';}否则{strcpy(cB,cRGB); strcpy(cG,&cRGB [2]); strcpy(cR,&cRGB [4]); cB [2] ='\ 0'; cG [2] ='\ 0';} R = XToI(cR); G = XToI(cG); B = XToI(cB);} intCGrayPicDlg :: XToI(char * xNumber){charchr; intnNumber = 0,nValue = 0,nTmp = 0; for(inti = strlen(xNumber); i> 0; i--){ chr = xNumber [strlen(xNumber)-i]; nNumber = XToTen(chr); int cc = pow(16,i- 1); nTmp = nNumber * pow(16,i- 1); nValue = nValue + nTmp;} returnnValue;} intCGrayPicDlg :: XToTen(char chr){inti; if(chr =='0')8i = 0; if(chr =='1')i = 1; if(chr =='2 ')i = 2; if(chr =='3')i = 3; if(chr =='4')i = 4; if(chr =='5')i = 5; if(chr == '6')i = 6; if(chr =='7')i = 7; if(chr =='8')i = 8; if(chr =='9')i = 9; if(chr =='a'||| chr =='A')i = 10; if(chr =='b'|| chr =='B')i = 11; if(chr =='c'|| chr =='C')i = 12; if(chr =='d'|| chr =='D')i = 13; if(chr =='e'|| chr =='E')i = 14; if(chr =='f'|| chr =='F')i = 15; returni;} // DEL void CGrayPicDlg :: OnButton3()// DEL {// DEL} void CGrayPicDlg :: OnTimer(UINT nIDEvent){this-> KillTimer(1); CDC * pDC = this-> m_StaGray.GetDC(); CDC MemDC; CBitmap bmp; 9bmp.LoadBitmap(IDB_BITMAP 1);位图BmpStruct; MemDC.CreateCompatibleDC(pDC); MemDC.SelectObject(&bmp); bmp.GetBitmap(&BmpStruct); COLORREF颜色; intnR,nG,nB; floatfGray; ; x = 0; xSetPixel(x,y,RGB(fGray,fGray,fGray));}} CDialog :: OnTimer(nIDEvent);} 10


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-362500-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 陈昌言
        陈昌言

        你看香港就是反面教材

      • 常少康
        常少康

        最好的办法就是干掉它

      热点图片
      拼命载入中...