OpenCV:22.实时人脸检测

本文介绍实时人脸检测技术,包括相机捕获图像中的人脸,并探讨人脸识别的基础数学概念如均值、方差、协方差及特征值分解。此外,还讨论了主成分分析(PCA)在人脸识别中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 相机实时人脸检测

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

    // @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. 人脸识别相关: 均值,方差与协方差、特征值与特征向量

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 原理与应用 (降维)

// 人脸识别相关: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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值