首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

opencv 做人脸识别 opencv 人脸匹配分析(2)

opencv 做人脸识别 opencv 人脸匹配分析(2)

代码注释:
复制代码 代码如下:
//需要载入的级联分类器文件
string face_cascade_name = "haarcascade_frontalface_alt.xml";
//级联分类器类
CascadeClassifier face_cascade;
//……
//载入级联分类器,并判断是否载入成功,如果不成功则打印提示
if( !face_cascade.load( face_cascade_name ) ){
printf("[error] 无法加载级联分类器文件!\n");
return -1;
}
//……
//对图片frame进行识别检测
face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );
转换成灰度图
由于CascadeClassifier类只支持CV_8U矩阵数据,所以我们需要将图片变成灰度图。
cvtColor API:
将图片从一个色彩空间转到另一个色彩空间。
C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
参数  
    src – 输入图像:8位无符号,16位无符号(CV_16UC...),或单精度浮点数据类型。
    dst – 输出图像,与输入图像相同大小、深度。
    code – 颜色空间转换代码。
    dstCn – 目标图像的通道数,当该参数为0时,则通道树由src和code自动得出。

该函数将输入图片从一个色彩空间转到另一个色彩空间。当从RGB颜色空间进行变换时,应明确指定的信道的顺序(RGB或BGR)。值得注意,在OpenCV的默认颜色格式中,通常被称为作为RGB,但实际上是BGR(字节是相反的)。因此,在一个标准的(24位)的彩色图像的第一个字节是一个8位的蓝色分量,第二个字节将是绿色的,第三个字节将是红色的。而第四,第五,和第六字节,则是第二像素(蓝,然后绿色,然后红色),依此类推。
R、G和B 通道通常信道值范围:
CV_8U:0 — 255
CV_16U:0 — 65535
CV_32F:0 — 1
线性变换的情况下,有没有范围是无所谓的。但是,在一个非线性变换的情况下,输入的RGB图像应被归为适当的值范围内,以得到正确的结果。例如,如果你有一个32位浮点图像直接转换成一个8位的图像而没有任何缩放,那么它将有0到255的数值范围,而这并不能准确0..1所有浮点数的值。所以,你需要之前调用cvtColor,进行图像缩放。
代码注释:
复制代码 代码如下:
//将frame转换成灰度图,输出到frame_gray
cvtColor( frame, frame_gray, CV_BGR2GRAY );
直方图均衡化
直方图是图像中像素强度分布的图形表达方式。
它统计了每一个强度值所具有的像素个数。
http://www.cnblogs.com/http://www.cnblogs.com/../_images/Histogram_Equalization_Theory_0.jpg
直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法。
说得更清楚一些, 以上面的直方图为例, 你可以看到像素主要集中在中间的一些强度值上. 直方图均衡化要做的就是 拉伸 这个范围. 见下面左图: 绿圈圈出了 少有像素分布其上的 强度值. 对其应用均衡化后, 得到了中间图所示的直方图. 均衡化的图像见下面右图.
http://www.cnblogs.com/http://www.cnblogs.com/../_images/Histogram_Equalization_Theory_1.jpg
我们利用直方图均衡化对图片增强对比度,方便级联分类器分析。
equalizeHist API:
对灰度图像进行直方图均衡。
C++: void equalizeHist(InputArray src, OutputArray dst)
table4
直方图均衡函数使用了下列的算发:
计算源文件的直方图H 。
调整直方图,使得其方格总个数为255。
对直方图进行积分:
H'_i = \sum _{0 \le j < i} H(j)
使用H'变换图片,其映射函数为:\texttt{dst}(x,y) = H'(\texttt{src}(x,y))。
该算法归一化亮度并增加了图像的对比度。
继承事业,薪火相传
返回列表