关于libfacedetection解析及应用(待)

本文深入探讨libfacedetection库,介绍其核心原理,并提供实际应用示例,帮助读者理解如何在项目中有效使用该库进行面部检测。

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




#include<opencv2\opencv.hpp>   

using namespace std;
using namespace cv;
using namespace cv::ml;

int main()
{


	//训练需要用到的数据  
	int label[4] = { 1, 2, 3, 4 };
	float train[4][2] = { { 31, 12 }, { 65, 220 }, { 440, 350 }, { 400, 400 } };
	//转为Mat以调用  
	Mat TRAIN(4, 2, CV_32FC1, train);
	Mat LABEL(4, 1, CV_32SC1, label);
	//训练的初始化  
	Ptr<SVM> svm = SVM::create();
	svm->setType(SVM::C_SVC);
	svm->setKernel(SVM::LINEAR);
	svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6));
	//开始训练  
	svm->train(TRAIN, ROW_SAMPLE, LABEL);

	//-----------无关紧要的美工的部分-----------------------    
	//----其实对每个像素点的坐标也进行了分类----------------  
	//int W = 512, H = 512;
	//Mat img = Mat::zeros(H, W, CV_8UC3);
	//Vec3b green(0, 255, 0), blue(255, 0, 0), red(0, 0, 255), black(0, 0, 0);
	//for (int i = 0; i < img.rows; ++i)
	//for (int j = 0; j < img.cols; ++j)
	//{
	//	Mat sampleMat = (Mat_<float>(1, 2) << j, i);
	//	float response = svm->predict(sampleMat);
	//	if (response == 1)
	//		img.at<Vec3b>(i, j) = green;
	//	else if (response == 2)
	//		img.at<Vec3b>(i, j) = blue;
	//	else if (response == 3)
	//		img.at<Vec3b>(i, j) = red;
	//	else if (response == 4)
	//		img.at<Vec3b>(i, j) = black;
	//}
	////--------把初始化训练的点画进图片------------  
	//int thickness = -1;
	//int lineType = 8;
	//for (int i = 0; i < sizeof(label) / sizeof(int);i++) {
	//	circle(img, Point(train[i][0], train[i][1]), 10, Scalar(255, 255, 255), thickness, -1);
	//	cout << "sizeof(label):" << sizeof(label) << endl;
	//	cout << "sizeof(int):" << sizeof(int) << endl;
	//}
	//// 把 support vectors  cout粗来看看……  
	//Mat sv = svm->getSupportVectors();
	//cout << "Support Vectors为:" << endl;
	//for (int i = 0; i < sv.rows; ++i)
	//{
	//	const float* v = sv.ptr<float>(i);
	//	cout << v[0] << " " << v[1] << endl;
	//}

	//测试测试  
	Mat dst;
	float testData[2][2] = { { 31, 11 }, { 61, 221 } };
	Mat testMat(2, 2, CV_32FC1, testData);

	svm->predict(testMat, dst);
	cout << "分类结果为:" << endl;
	cout << dst;
	//imshow("SVM显示", img);
	waitKey(-1);

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值