初春岭:人脸面部特征提取技术的研究
dc.SelectObject(m_pResMap);
for(int i=0; i dc.SetPixelV(j,i,RGB(m_tResPixelArray[i][j].rgbRed,m_tResPixelArray[i][j].rgbGreen,m_tResPixelArray[i][j].rgbBlue)); dc.DeleteDC(); MyDraw(); } (2) 效果图 图4-5 sobel边缘提取 24 2008届计算机科学与技术专业毕业设计(论文) 4.2.4 对比度增强 (1)进行编码来实现该功能: 在编辑界面中添加一个滑动条控件和文本编辑器,将其命名为‘灰度化变换’,并其ID号分别设为IDC_SLIDER2, IDC_EDIT2,对应文件CFaceDetectDlg.Cpp中的函数OnReleasedcaptureSlider2()和OnChangeEdit2()实现。打开ClassWizard的Member Variables标签,给每个控件添加所需的成员变量,参数如下: 表4.2 空间ID号 IDC_SLIDER1 IDC_EDIT1 变量类型 CSliderCtrl int 变量名 m_Slider2 m_Degree 范围和大小 ―― 0~255 在滑动条的消息处理函数OnReleasedcaptureSlider2()中设置滑动条的值使它等于文本编辑框的初始值。代码为: for (int i=0;i { for (int j=0;j { //获取红色分量 int r=m_tResPixelArray[i][j].rgbRed; //获取绿色分量 int g=m_tResPixelArray[i][j].rgbGreen; //获取蓝色分量 int b=m_tResPixelArray[i][j].rgbBlue; //对RGB进行变换 int red=abs((127-r)*m_Degree)/255; int green=abs((127-g)*m_Degree)/255; int blue=abs((127-b)*m_Degree)/255; 25 初春岭:人脸面部特征提取技术的研究 //使颜色对比度更加明显 if(r>127)r+=red; else r-=red; if (g>127) { } else g-=green; if (b>127) { } else b-=blue; b+=blue; g+=green; if (r > 255) r = 255; if (r < 0) r = 0; if (g > 255) g = 255; if (g < 0) g = 0; if (b > 255) b = 255; if (b < 0) b = 0; m_tResPixelArray[i][j].rgbRed=r; m_tResPixelArray[i][j].rgbGreen=g; m_tResPixelArray[i][j].rgbBlue=b; } MakeBitMap(); UpdateData(true); } 26 2008届计算机科学与技术专业毕业设计(论文) (2) 效果图 图4-6 原图像 27 初春岭:人脸面部特征提取技术的研究 图4-6 对比度增强后效果图 28