OpenCV:22.实时人脸检测

1. 相机实时人脸检测

具体代码请看:NDKPractice项目的opencv70

1
2
3
4
5
// @param 1.1 会采用上采样、下采样、缩放比例
// @param 3 会检测多少次才能判断是个人脸
// @param Size(width/4,height/4) 最小的人脸大小
// @param Size(width,height) 最大的人脸
cascadeClassifier.detectMultiScale(gray,faces,1.1,3,0,Size(width/4,height/4),Size(width,height));

2. 人脸识别相关: 均值,方差与协方差、特征值与特征向量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int main(){

Mat src = (Mat_<double>(3, 3) << 50, 50, 50, 60, 60, 60, 70, 70, 70);
// 平均值 :(50+50+50+...+70) / 9 = 60;
// 标准方差(均方差):各个数据与平均值之差的平方的和的平均数,再开根号
// ((50-60)的平方 + (50-60)的平方 + (50-60)的平方 + (60-60)的平方... + (70-60)的平方)/9 = 开根号(66.6666666667) = 8.1649658093
Mat mean, stddev; // mean 平均值,stddev 标准方差
meanStdDev(src, mean, stddev);
cout << mean << endl;
cout << stddev << endl;

cout << "========================================" << endl;

// 协方差矩阵
Mat covar;
calcCovarMatrix(src,covar,mean,COVAR_NORMAL | COVAR_ROWS);
cout << mean << endl;
cout << covar << endl;

cout << "========================================" << endl;

// 协方差矩阵再去求特征和特征向量
src = (Mat_<double>(2, 2) << 100, 100, 100, 100);
Mat eigenvalues, eigenvectors;
eigen(src, eigenvalues, eigenvectors);
cout << eigenvalues << endl;
cout << eigenvectors << endl;

waitKey(0);
getchar();
return 0;
}

3.人脸识别相关:PCA 原理与应用 (降维)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 人脸识别相关:PCA 原理与应用 (降维)
int main(){

Mat src = imread("E:/copy.png");

int size = src.rows * src.cols;
Mat data(size,3,CV_8UC1);

for (int i = 0; i < size; i++)
{
int row = i / src.cols;
int col = i - row * src.cols;

data.at<uchar>(i, 0) = src.at<Vec3b>(row, col)[0];
data.at<uchar>(i, 1) = src.at<Vec3b>(row, col)[1];
data.at<uchar>(i, 2) = src.at<Vec3b>(row, col)[2];
}

// 最终降维的数据
PCA pca_analyze(data, Mat(), PCA::Flags::DATA_AS_ROW);

cout << pca_analyze.mean << endl;
cout << pca_analyze.eigenvalues << endl;
cout << pca_analyze.eigenvectors << endl;

waitKey(0);
getchar();
return 0;
}
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!
0%